fix(测试跟踪): 首页遗留缺陷统计总数和占比统计
--bug=1017609 --user=李玉号 【测试跟踪】首页遗留缺陷统计总数和占比有统计错误 https://www.tapd.cn/55049933/s/1285282
This commit is contained in:
parent
6cf24e5152
commit
c3da2a7584
|
@ -890,7 +890,14 @@
|
|||
join issues
|
||||
on tci.issues_id = issues.id
|
||||
where tptc.plan_id = #{planId}
|
||||
and test_case.status != 'Trash';
|
||||
and test_case.status != 'Trash'
|
||||
union distinct
|
||||
select distinct tci.issues_id
|
||||
from test_plan_test_case tptc
|
||||
join test_case_issues tci on tptc.id = tci.resource_id
|
||||
join issues
|
||||
on tci.issues_id = issues.id
|
||||
where tptc.plan_id = #{planId}
|
||||
</select>
|
||||
<select id="getTestPlanCase" resultType="int">
|
||||
select count(s)
|
||||
|
|
|
@ -3,14 +3,15 @@ package io.metersphere.service;
|
|||
import io.metersphere.base.domain.TestPlan;
|
||||
import io.metersphere.base.domain.TestPlanExample;
|
||||
import io.metersphere.base.mapper.TestPlanMapper;
|
||||
import io.metersphere.base.mapper.ext.ExtIssuesMapper;
|
||||
import io.metersphere.base.mapper.ext.ExtTestCaseMapper;
|
||||
import io.metersphere.commons.utils.DateUtils;
|
||||
import io.metersphere.dto.BugStatistics;
|
||||
import io.metersphere.dto.TestPlanBugCount;
|
||||
import io.metersphere.dto.TestPlanDTOWithMetric;
|
||||
import io.metersphere.dto.TrackCountResult;
|
||||
import io.metersphere.dto.*;
|
||||
import io.metersphere.plan.dto.ChartsData;
|
||||
import io.metersphere.plan.service.TestPlanService;
|
||||
import io.metersphere.xpack.track.dto.IssuesDao;
|
||||
import io.metersphere.xpack.track.dto.request.IssuesRequest;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -23,6 +24,7 @@ import java.util.ArrayList;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
@ -37,6 +39,9 @@ public class TrackService {
|
|||
@Resource
|
||||
private TestPlanService testPlanService;
|
||||
|
||||
@Resource
|
||||
private ExtIssuesMapper extIssuesMapper;
|
||||
|
||||
public List<TrackCountResult> countPriority(String projectId) {
|
||||
return extTestCaseMapper.countPriority(projectId);
|
||||
}
|
||||
|
@ -111,15 +116,15 @@ public class TrackService {
|
|||
List<TestPlanBugCount> list = new ArrayList<>();
|
||||
BugStatistics bugStatistics = new BugStatistics();
|
||||
int index = 1;
|
||||
int totalCaseSize = 0;
|
||||
int totalBugSize = 0;
|
||||
int totalPlanBugSize = 0;
|
||||
int allUnClosedBugSize = this.getAllUnClosedBugSize(projectId);
|
||||
for (TestPlan plan : plans) {
|
||||
int planBugSize = getPlanBugSize(plan.getId(), projectId);
|
||||
// bug为0不记录
|
||||
if (planBugSize == 0) {
|
||||
continue;
|
||||
}
|
||||
totalBugSize += planBugSize;
|
||||
totalPlanBugSize += planBugSize;
|
||||
|
||||
TestPlanBugCount testPlanBug = new TestPlanBugCount();
|
||||
testPlanBug.setIndex(index++);
|
||||
|
@ -135,14 +140,13 @@ public class TrackService {
|
|||
double planPassRage = getPlanPassRage(plan.getId());
|
||||
testPlanBug.setPassRage(planPassRage + "%");
|
||||
list.add(testPlanBug);
|
||||
totalCaseSize += planCaseSize;
|
||||
|
||||
}
|
||||
bugStatistics.setList(list);
|
||||
float rage = totalCaseSize == 0 ? 0 : (float) totalBugSize * 100 / totalCaseSize;
|
||||
float rage = allUnClosedBugSize == 0 ? 0 : (float) totalPlanBugSize * 100 / allUnClosedBugSize;
|
||||
DecimalFormat df = new DecimalFormat("0.0");
|
||||
bugStatistics.setRage(df.format(rage) + "%");
|
||||
bugStatistics.setBugTotalSize(totalBugSize);
|
||||
bugStatistics.setBugTotalSize(allUnClosedBugSize);
|
||||
return bugStatistics;
|
||||
}
|
||||
|
||||
|
@ -165,6 +169,21 @@ public class TrackService {
|
|||
.count();
|
||||
}
|
||||
|
||||
private int getAllUnClosedBugSize(String projectId) {
|
||||
IssuesRequest req = new IssuesRequest();
|
||||
req.setProjectId(projectId);
|
||||
List<IssuesDao> issues = extIssuesMapper.getIssues(req);
|
||||
if (CollectionUtils.isEmpty(issues)) {
|
||||
return 0;
|
||||
}
|
||||
List<String> ids = issues.stream().map(IssuesDao::getId).collect(Collectors.toList());
|
||||
Map<String, String> statusMap = customFieldIssuesService.getIssueStatusMap(ids, projectId);
|
||||
|
||||
return (int) issues.stream()
|
||||
.filter(i -> !StringUtils.equals(statusMap.getOrDefault(i.getId(), StringUtils.EMPTY).replaceAll("\"", StringUtils.EMPTY), "closed"))
|
||||
.count();
|
||||
}
|
||||
|
||||
private double getPlanPassRage(String planId) {
|
||||
TestPlanDTOWithMetric testPlan = new TestPlanDTOWithMetric();
|
||||
testPlan.setId(planId);
|
||||
|
|
Loading…
Reference in New Issue