From 44069a7c55b015fc451735084ec20d54c958ff90 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 6 Dec 2024 11:13:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82=E9=87=8D=E6=9E=84):=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=A7=E5=93=81=E4=B8=AD=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E8=A7=84=E6=A0=BC=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增需求规格关联测试用例及其执行结果查询 Signed-off-by: OTTO <731554297@qq.com> --- .../ProductReqTrackingController.java | 15 +++++ ...oductReqSpecsAssociatedTestcaseDataVo.java | 55 +++++++++++++++++++ .../service/IPmsProjectTestcaseService.java | 3 + .../impl/PmsProjectTestcaseServiceImpl.java | 36 ++++++++++-- .../mapper/pms/PmsProjectTestcaseMapper.xml | 1 + 5 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsAssociatedTestcaseDataVo.java 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 47cef7119..191289edf 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 @@ -3,7 +3,9 @@ package com.microservices.pms.product.controller; import com.microservices.common.core.web.controller.BaseController; 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.project.service.IPmsProjectTestcaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -31,6 +33,8 @@ import java.util.List; public class ProductReqTrackingController extends BaseController { @Autowired private IPmsProductReqOperationRecordService pmsProductReqOperationRecordService; + @Autowired + private IPmsProjectTestcaseService pmsProjectTestcaseService; /** * 查询用户需求变更记录 @@ -53,4 +57,15 @@ public class ProductReqTrackingController extends BaseController { @PathVariable("reqSpecsId") Long reqSpecsId) { return pmsProductReqOperationRecordService.selectReqSpecsChangeRecordList(reqSpecsId); } + + /** + * 查询用户需求变更记录 + */ + @ApiOperation(value = "查询关联的测试用例") + @RequiresPermissions("pms:pmsProduct:show") + @GetMapping("/{reqSpecsId}/associatedTestcase") + public List getReqSpecsAssociatedTestcaseList( + @PathVariable("reqSpecsId") Long reqSpecsId) { + return pmsProjectTestcaseService.selectReqSpecsAssociatedTestcaseList(reqSpecsId); + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsAssociatedTestcaseDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsAssociatedTestcaseDataVo.java new file mode 100644 index 000000000..3135558c1 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/domain/vo/ProductReqSpecsAssociatedTestcaseDataVo.java @@ -0,0 +1,55 @@ +package com.microservices.pms.product.domain.vo; + +import com.microservices.pms.enums.TestCaseStatus; +import com.microservices.pms.project.domain.PmsProjectTestsheetCases; +import com.microservices.system.api.domain.SimpleSysUser; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 产品需求对象 pms_product_requirement + * + * @author otto + * @date 2023-10-10 + */ +@Data +@ApiModel("需求规格关联测试用例数据对象") +public class ProductReqSpecsAssociatedTestcaseDataVo { + private Long id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "用例维护人") + private SimpleSysUser assigneeUser; + + @ApiModelProperty(value = "执行次数") + private Long executeCount; + + @ApiModelProperty(value = "未执行次数") + private Long unExecuteCount; + + @ApiModelProperty(value = "通过次数") + private Long executePassCount; + + @ApiModelProperty(value = "跳过次数") + private Long executeSkipCount; + + @ApiModelProperty(value = "阻塞次数") + private Long executeBlockCount; + + @ApiModelProperty(value = "失败次数") + private Long executeFailCount; + + public void setCountData(List testsheetCasesList) { + this.setUnExecuteCount(testsheetCasesList.stream().filter(x -> TestCaseStatus.INIT.ordinal() == x.getTestStatus().intValue()).count()); + this.setExecutePassCount(testsheetCasesList.stream().filter(x -> TestCaseStatus.PASS.ordinal() == x.getTestStatus().intValue()).count()); + this.setExecuteFailCount(testsheetCasesList.stream().filter(x -> TestCaseStatus.FAIL.ordinal() == x.getTestStatus().intValue()).count()); + this.setExecuteBlockCount(testsheetCasesList.stream().filter(x -> TestCaseStatus.BLOCKING.ordinal() == x.getTestStatus().intValue()).count()); + this.setExecuteSkipCount(testsheetCasesList.stream().filter(x -> TestCaseStatus.SKIP.ordinal() == x.getTestStatus().intValue()).count()); + this.setExecuteCount((long) testsheetCasesList.size()); + } +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectTestcaseService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectTestcaseService.java index 6ad150600..06b701240 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectTestcaseService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/IPmsProjectTestcaseService.java @@ -2,6 +2,7 @@ package com.microservices.pms.project.service; import com.alibaba.fastjson2.JSONObject; import com.microservices.common.core.web.page.GenericsTableDataInfo; +import com.microservices.pms.product.domain.vo.ProductReqSpecsAssociatedTestcaseDataVo; import com.microservices.pms.project.domain.PmsProjectTestcase; import com.microservices.pms.project.domain.vo.PmsProjectTestcaseDataVo; import com.microservices.pms.project.domain.vo.PmsProjectTestcaseDetailVo; @@ -113,4 +114,6 @@ public interface IPmsProjectTestcaseService { * @return 测试用例列表 */ List selectPmsProjectTestcaseList(PmsProjectTestcase pmsProjectTestcaseSearch); + + List selectReqSpecsAssociatedTestcaseList(Long reqSpecsId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectTestcaseServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectTestcaseServiceImpl.java index 97918fb48..8e48da3da 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectTestcaseServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/project/service/impl/PmsProjectTestcaseServiceImpl.java @@ -5,6 +5,7 @@ import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.JSONUtils; import com.microservices.common.core.utils.PageUtils; +import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.common.security.utils.SecurityUtils; import com.microservices.pms.common.service.IPmsCommonService; @@ -13,13 +14,11 @@ import com.microservices.pms.enterprise.service.IPmsEnterpriseService; import com.microservices.pms.product.domain.PmsProductModule; import com.microservices.pms.product.domain.PmsProductRequirement; import com.microservices.pms.product.domain.enums.ProductReqStatus; +import com.microservices.pms.product.domain.vo.ProductReqSpecsAssociatedTestcaseDataVo; import com.microservices.pms.product.service.IPmsProductModuleService; import com.microservices.pms.product.service.IPmsProductRequirementService; import com.microservices.pms.product.service.IPmsProductRequirementTagService; -import com.microservices.pms.project.domain.PmsProject; -import com.microservices.pms.project.domain.PmsProjectTestcase; -import com.microservices.pms.project.domain.PmsProjectTestcaseStep; -import com.microservices.pms.project.domain.PmsProjectTestcaseType; +import com.microservices.pms.project.domain.*; import com.microservices.pms.project.domain.vo.PmsProjectTestcaseBatchUpdateVo; import com.microservices.pms.project.domain.vo.PmsProjectTestcaseDataVo; import com.microservices.pms.project.domain.vo.PmsProjectTestcaseDetailVo; @@ -35,6 +34,7 @@ import com.microservices.system.api.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -192,6 +192,34 @@ public class PmsProjectTestcaseServiceImpl implements IPmsProjectTestcaseService return pmsProjectTestcaseMapper.selectPmsProjectTestcaseList(pmsProjectTestcaseSearch); } + @Override + public List selectReqSpecsAssociatedTestcaseList(Long reqSpecsId) { + List reqSpecsTestcaseDataVoList = new ArrayList<>(); + PmsProductRequirement pmsProductRequirement = pmsProductRequirementService.selectPmsProductRequirementById(reqSpecsId, false); + if (ProductReqStatus.isUserReqStatus(pmsProductRequirement.getStatus())) { + throw new ServiceException("用户需求无法查询关联的测试用例"); + } + PmsProjectTestcase testcaseSearch = new PmsProjectTestcase(); + testcaseSearch.setProductReqSpecsId(reqSpecsId); + List reqSpecsTestcaseList = pmsProjectTestcaseMapper.selectPmsProjectTestcaseList(testcaseSearch); + HashMap hashMap = new HashMap<>(); + for (PmsProjectTestcase pmsProjectTestcase : reqSpecsTestcaseList) { + ProductReqSpecsAssociatedTestcaseDataVo reqSpecsTestcaseDataVo = new ProductReqSpecsAssociatedTestcaseDataVo(); + BeanUtils.copyProperties(pmsProjectTestcase, reqSpecsTestcaseDataVo); + reqSpecsTestcaseDataVo.setAssigneeUser( + PmsUtils.getSelectObjectInCache( + hashMap + , pmsCommonService::getSimpleSysUserByGitlinkUserId + , pmsProjectTestcase.getAssigneeGitlinkId())); + PmsProjectTestsheetCases projectTestSheetCasesSearch = new PmsProjectTestsheetCases(); + projectTestSheetCasesSearch.setProjectTestcaseId(pmsProjectTestcase.getId()); + List testsheetCasesList = pmsProjectTestsheetCasesMapper.selectPmsProjectTestsheetCasesList(projectTestSheetCasesSearch); + reqSpecsTestcaseDataVo.setCountData(testsheetCasesList); + reqSpecsTestcaseDataVoList.add(reqSpecsTestcaseDataVo); + } + return reqSpecsTestcaseDataVoList; + } + /** * 新增测试用例管理 * diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestcaseMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestcaseMapper.xml index bc6706185..db06427f2 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestcaseMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProjectTestcaseMapper.xml @@ -67,6 +67,7 @@ and type_id = #{typeId} and FIND_IN_SET(#{tagId},tag_ids) and `index` = #{index} + and `product_req_specs_id` = #{productReqSpecsId}