diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqTrackingController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqTrackingController.java index 191289edf..7609d4e19 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqTrackingController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/controller/ProductReqTrackingController.java @@ -1,10 +1,14 @@ package com.microservices.pms.product.controller; +import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.web.controller.BaseController; +import com.microservices.common.core.web.domain.GenericsAjaxResult; +import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.common.security.annotation.RequiresPermissions; import com.microservices.pms.product.domain.vo.ProductReqOperationRecordDataVo; import com.microservices.pms.product.domain.vo.ProductReqSpecsAssociatedTestcaseDataVo; import com.microservices.pms.product.service.IPmsProductReqOperationRecordService; +import com.microservices.pms.product.service.IPmsProductRequirementService; import com.microservices.pms.project.service.IPmsProjectTestcaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -16,8 +20,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - /** * 产品需求规格相关接口 * @@ -35,6 +37,8 @@ public class ProductReqTrackingController extends BaseController { private IPmsProductReqOperationRecordService pmsProductReqOperationRecordService; @Autowired private IPmsProjectTestcaseService pmsProjectTestcaseService; + @Autowired + private IPmsProductRequirementService pmsProductRequirementService; /** * 查询用户需求变更记录 @@ -42,9 +46,9 @@ public class ProductReqTrackingController extends BaseController { @ApiOperation(value = "查询用户需求变更记录") @RequiresPermissions("pms:pmsProduct:show") @GetMapping("/{userReqId}/userReqChangeRecord") - public List getUserReqChangeRecordList( + public GenericsTableDataInfo getUserReqChangeRecordList( @PathVariable("userReqId") Long userReqId) { - return pmsProductReqOperationRecordService.selectUserReqChangeRecordList(userReqId); + return getGenericsDataTable(pmsProductReqOperationRecordService.selectUserReqChangeRecordList(userReqId)); } /** @@ -53,19 +57,24 @@ public class ProductReqTrackingController extends BaseController { @ApiOperation(value = "查询需求规格变更记录") @RequiresPermissions("pms:pmsProduct:show") @GetMapping("/{reqSpecsId}/reqSpecsChangeRecord") - public List getReqSpecsChangeRecordList( + public GenericsTableDataInfo getReqSpecsChangeRecordList( @PathVariable("reqSpecsId") Long reqSpecsId) { - return pmsProductReqOperationRecordService.selectReqSpecsChangeRecordList(reqSpecsId); + return getGenericsDataTable(pmsProductReqOperationRecordService.selectReqSpecsChangeRecordList(reqSpecsId)); } - /** - * 查询用户需求变更记录 - */ - @ApiOperation(value = "查询关联的测试用例") + @ApiOperation(value = "查询需求规格关联的测试用例") @RequiresPermissions("pms:pmsProduct:show") @GetMapping("/{reqSpecsId}/associatedTestcase") - public List getReqSpecsAssociatedTestcaseList( + public GenericsTableDataInfo getReqSpecsAssociatedTestcaseList( @PathVariable("reqSpecsId") Long reqSpecsId) { - return pmsProjectTestcaseService.selectReqSpecsAssociatedTestcaseList(reqSpecsId); + return getGenericsDataTable(pmsProjectTestcaseService.selectReqSpecsAssociatedTestcaseList(reqSpecsId)); + } + + @ApiOperation(value = "查询需求规格关联的计划") + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping("/{reqSpecsId}/associatedPlan") + public GenericsAjaxResult getReqSpecsAssociatedPlanData( + @PathVariable("reqSpecsId") Long reqSpecsId) { + return GenericsAjaxResult.success(pmsProductRequirementService.selectReqSpecsAssociatedPlanData(reqSpecsId)); } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java index dacd76b1b..c92053682 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/IPmsProductRequirementService.java @@ -1,5 +1,6 @@ package com.microservices.pms.product.service; +import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.pms.product.domain.PmsProductRequirement; import com.microservices.pms.product.domain.vo.*; @@ -122,4 +123,6 @@ public interface IPmsProductRequirementService List selectReqSpecsStatusList(); List selectReqSpecsTypeList(); + + JSONObject selectReqSpecsAssociatedPlanData(Long reqSpecsId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java index 277dd3137..ba1b93a85 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductRequirementServiceImpl.java @@ -10,6 +10,7 @@ import com.microservices.common.core.utils.PageUtils; import com.microservices.common.core.utils.PinYinStringUtils; import com.microservices.common.core.utils.StringUtils; import com.microservices.common.core.web.page.GenericsTableDataInfo; +import com.microservices.common.httpClient.util.GitLinkRequestHelper; import com.microservices.common.security.utils.SecurityUtils; import com.microservices.pms.common.service.IPmsCommonService; import com.microservices.pms.enterprise.domain.PmsEnterprise; @@ -25,6 +26,7 @@ import com.microservices.pms.project.domain.vo.PmsProjectIssuesInputVo; import com.microservices.pms.project.service.IPmsProjectService; import com.microservices.pms.project.service.PmsProjectIssuesService; import com.microservices.pms.utils.PmsConstants; +import com.microservices.pms.utils.PmsGitLinkRequestUrl; import com.microservices.pms.utils.PmsUtils; import com.microservices.system.api.RemoteFileService; import com.microservices.system.api.domain.SysUser; @@ -74,6 +76,8 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS private IPmsJournalsService pmsJournalsService; @Autowired private RemoteFileService remoteFileService; + @Autowired + private GitLinkRequestHelper gitLinkRequestHelper; @Override public PmsProductRequirement selectPmsProductRequirementById(Long id, boolean checkRole) { @@ -255,8 +259,9 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS PmsProductRequirement oldPmsProductRequirement = selectPmsProductRequirementById(id, true); if (!ProductReqStatus.PENDING_REVIEW_REQ_SPECS.getKey().equals(oldPmsProductRequirement.getStatus()) && - !ProductReqStatus.CHANGING_REQ_SPECS.getKey().equals(oldPmsProductRequirement.getStatus())) { - throw new ServiceException("只有待审核和变更中状态的需求规格才能被删除"); + !ProductReqStatus.CHANGING_REQ_SPECS.getKey().equals(oldPmsProductRequirement.getStatus()) && + !ProductReqStatus.REJECTED_REQ_SPECS.getKey().equals(oldPmsProductRequirement.getStatus())) { + throw new ServiceException("只有待审核、变更中和已拒绝状态的需求规格才能被删除"); } if (ProductReqStatus.CHANGING_REQ_SPECS.getKey().equals(oldPmsProductRequirement.getStatus())) { // 变更中需求规格被删除时需将原需求还原状态 @@ -528,7 +533,7 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS JSONObject projectIssue = pmsProjectIssuesService.insertPmsProjectIssues(pmsProjectIssuesInputVo); reqSpecs.setPmsProjectId(project.getId()); reqSpecs.setProjectReqId(projectIssue.getLong("id")); - reqSpecs.setStatus(ProductReqStatus.PLANNED_REQ_SPECS_CHANGING.getKey()); + reqSpecs.setStatus(ProductReqStatus.PLANNED_REQ_SPECS.getKey()); int success = updateRequirement(reqSpecs, reqSpecs.getPmsProductIdentifier()); pmsProductReqOperationRecordService.insertPmsProductReqOperationRecord( productReqSpecsActivePlanVo.toPmsProductReqOperationRecord(reqSpecs) @@ -551,6 +556,17 @@ public class PmsProductRequirementServiceImpl implements IPmsProductRequirementS return ProductReqSpecsType.getReqSpecsTypeList(); } + @Override + public JSONObject selectReqSpecsAssociatedPlanData(Long reqSpecsId) { + PmsProductRequirement reqSpecs = selectPmsProductRequirementById(reqSpecsId, true); + if (reqSpecs.getPmsProjectId() == null) { + return null; + } + return gitLinkRequestHelper.doGet( + PmsGitLinkRequestUrl.GET_REQ_SPECS_LINK_ISSUES(reqSpecs.getProjectReqId(), reqSpecs.getPmsProjectId()) + ); + } + private ProductReqSpecsDetailVo toProductReqSpecsDetailVo(PmsProductRequirement pmsProductRequirement) { ProductReqSpecsDataVo productReqSpecsDataVo = toProductReqSpecsDataVo(pmsProductRequirement, null); ProductReqSpecsDetailVo productReqSpecsDetailVo = productReqSpecsDataVo.toProductReqSpecsDetailVo(); 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 56c37d119..6031771e2 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 @@ -362,4 +362,8 @@ public class PmsGitLinkRequestUrl extends GitLinkRequestUrl { public static GitLinkRequestUrl SAVE_PIPELINE_YAML(String owner, String repoIdentifier) { return getGitLinkRequestUrl(String.format("/api/v1/%s/%s/pipelines/save_yaml", owner, repoIdentifier)); } + + public static GitLinkRequestUrl GET_REQ_SPECS_LINK_ISSUES(Long reqSpecsIssueId, Long projectId) { + return getGitLinkRequestUrl(String.format("/api/pm/issues/%d/link_issues?pm_project_id=%d", reqSpecsIssueId, projectId)); + } }