feat(测试计划): 任务中心支持计划组父子层级查看
--story=1015333 --user=宋昌昌 【测试计划】完成剩余功能 https://www.tapd.cn/55049933/s/1543343
This commit is contained in:
parent
5e647b2070
commit
307be50c14
|
@ -5,6 +5,8 @@ import lombok.Data;
|
|||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author: LAN
|
||||
|
@ -66,5 +68,9 @@ public class TaskCenterDTO implements Serializable {
|
|||
@Schema(description = "执行历史是否被清理")
|
||||
private boolean historyDeleted = false;
|
||||
|
||||
@Schema(description = "计划组ID")
|
||||
private String parentId;
|
||||
|
||||
@Schema(description = "计划组子任务")
|
||||
private List<TaskCenterDTO> children = new ArrayList<>();
|
||||
}
|
||||
|
|
|
@ -47,6 +47,8 @@ public interface ExtTestPlanReportMapper {
|
|||
List<TaskCenterDTO> taskCenterlist(@Param("request") TaskCenterPageRequest request, @Param("projectIds") List<String> projectIds,
|
||||
@Param("startTime") long startTime, @Param("endTime") long endTime);
|
||||
|
||||
List<TaskCenterDTO> getChildTaskCenter(@Param("ids") List<String> groupReportIds);
|
||||
|
||||
List<TestPlanReportDetailResponse> getPlanReportListById(@Param("request") TestPlanReportDetailPageRequest request);
|
||||
|
||||
List<ReportDTO> getReports(@Param("request") TaskCenterBatchRequest request, @Param("projectIds") List<String> projectIds,
|
||||
|
|
|
@ -70,8 +70,8 @@
|
|||
tpr.create_user AS operationName,
|
||||
tpr.trigger_mode,
|
||||
tpr.start_time,
|
||||
'' as parentId,
|
||||
project.organization_id,
|
||||
|
||||
tp.num AS resourceNum,
|
||||
tp.name AS resourceName,
|
||||
tp.id AS resourceId
|
||||
|
@ -81,6 +81,8 @@
|
|||
left join project on tpr.project_id = project.id
|
||||
where
|
||||
tpr.start_time BETWEEN #{startTime} AND #{endTime}
|
||||
<!-- 独立报告 && 计划组报告 -->
|
||||
and tpr.id = tpr.parent_id
|
||||
<if test="projectIds != null and projectIds.size() > 0">
|
||||
and
|
||||
tpr.project_id IN
|
||||
|
@ -96,6 +98,37 @@
|
|||
</if>
|
||||
<include refid="filter"/>
|
||||
</select>
|
||||
|
||||
<select id="getChildTaskCenter" resultType="io.metersphere.system.dto.taskcenter.TaskCenterDTO">
|
||||
select
|
||||
distinct tpr.id,
|
||||
tpr.project_id,
|
||||
tpr.integrated,
|
||||
tpr.result_status as status,
|
||||
tpr.exec_status,
|
||||
tpr.start_time as operationTime,
|
||||
tpr.create_user as operationName,
|
||||
tpr.trigger_mode,
|
||||
tpr.start_time,
|
||||
tpr.parent_id as parentId,
|
||||
project.organization_id,
|
||||
tp.num as resourceNum,
|
||||
tp.name as resourceName,
|
||||
tp.id as resourceId
|
||||
from
|
||||
test_plan_report tpr
|
||||
inner join test_plan tp ON tpr.test_plan_id = tp.id
|
||||
left join project on tpr.project_id = project.id
|
||||
where
|
||||
tpr.id != tpr.parent_id
|
||||
<if test="ids != null and ids.size() > 0">
|
||||
and tpr.parent_id in
|
||||
<foreach collection="ids" item="id" separator="," open="(" close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getPlanReportListById"
|
||||
resultType="io.metersphere.plan.dto.response.TestPlanReportDetailResponse">
|
||||
|
||||
|
|
|
@ -827,9 +827,7 @@ public class TestPlanService extends TestPlanBaseUtilsService {
|
|||
List<String> userIds = hisList.stream().map(TestPlanExecuteHisDTO::getOperationUser).distinct().toList();
|
||||
List<OptionDTO> userOptions = baseUserMapper.selectUserOptionByIds(userIds);
|
||||
Map<String, String> userMap = userOptions.stream().collect(Collectors.toMap(OptionDTO::getId, OptionDTO::getName));
|
||||
hisList.forEach(his -> {
|
||||
his.setOperationUser(userMap.getOrDefault(his.getOperationUser(), his.getOperationUser()));
|
||||
});
|
||||
hisList.forEach(his -> his.setOperationUser(userMap.getOrDefault(his.getOperationUser(), his.getOperationUser())));
|
||||
return hisList;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.github.pagehelper.Page;
|
|||
import com.github.pagehelper.page.PageMethod;
|
||||
import io.metersphere.api.dto.definition.ExecuteReportDTO;
|
||||
import io.metersphere.api.dto.report.ReportDTO;
|
||||
import io.metersphere.api.mapper.ExtApiReportMapper;
|
||||
import io.metersphere.api.mapper.ExtApiScenarioReportMapper;
|
||||
import io.metersphere.engine.MsHttpClient;
|
||||
import io.metersphere.plan.mapper.ExtTestPlanReportMapper;
|
||||
|
@ -78,8 +77,6 @@ public class TestPlanTaskCenterService {
|
|||
@Resource
|
||||
OperationLogService operationLogService;
|
||||
@Resource
|
||||
ExtApiReportMapper extApiReportMapper;
|
||||
@Resource
|
||||
ExtApiScenarioReportMapper extApiScenarioReportMapper;
|
||||
@Resource
|
||||
TestPlanExecuteService testPlanExecuteService;
|
||||
|
@ -132,21 +129,26 @@ public class TestPlanTaskCenterService {
|
|||
if (CollectionUtils.isNotEmpty(projectIds)) {
|
||||
Map<String, ExecuteReportDTO> historyDeletedMap = new HashMap<>();
|
||||
list = extTestPlanReportMapper.taskCenterlist(request, isSystem ? new ArrayList<>() : projectIds, DateUtils.getDailyStartTime(), DateUtils.getDailyEndTime());
|
||||
//执行历史列表
|
||||
// 查询计划组的任务的子计划任务
|
||||
List<String> groupReportIds = list.stream().filter(TaskCenterDTO::isIntegrated).map(TaskCenterDTO::getId).toList();
|
||||
if (CollectionUtils.isNotEmpty(groupReportIds)) {
|
||||
List<TaskCenterDTO> childTaskCenterList = extTestPlanReportMapper.getChildTaskCenter(groupReportIds);
|
||||
Map<String, List<TaskCenterDTO>> childTaskMap = childTaskCenterList.stream().collect(Collectors.groupingBy(TaskCenterDTO::getParentId));
|
||||
list.forEach(item -> {
|
||||
if (CollectionUtils.isNotEmpty(childTaskMap.get(item.getId()))) {
|
||||
item.setChildren(childTaskMap.get(item.getId()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 执行历史列表
|
||||
List<String> reportIds = list.stream().map(TaskCenterDTO::getId).toList();
|
||||
if (CollectionUtils.isNotEmpty(reportIds)) {
|
||||
List<ExecuteReportDTO> historyDeletedList = extTestPlanReportMapper.getHistoryDeleted(reportIds);
|
||||
historyDeletedMap = historyDeletedList.stream().collect(Collectors.toMap(ExecuteReportDTO::getId, Function.identity()));
|
||||
}
|
||||
processTaskCenter(list, projectList, projectIds, historyDeletedMap);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private void processTaskCenter(List<TaskCenterDTO> list, List<OptionDTO> projectList, List<String> projectIds, Map<String, ExecuteReportDTO> historyDeletedMap) {
|
||||
if (!list.isEmpty()) {
|
||||
// 取所有的userid
|
||||
// 准备参数
|
||||
Set<String> userSet = list.stream()
|
||||
.flatMap(item -> Stream.of(item.getOperationName()))
|
||||
.collect(Collectors.toSet());
|
||||
|
@ -156,12 +158,22 @@ public class TestPlanTaskCenterService {
|
|||
// 组织
|
||||
List<OptionDTO> orgListByProjectList = getOrgListByProjectIds(projectIds);
|
||||
Map<String, String> orgMap = orgListByProjectList.stream().collect(Collectors.toMap(OptionDTO::getId, OptionDTO::getName));
|
||||
processTaskCenter(list, userMap, projectMap, orgMap, historyDeletedMap);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private void processTaskCenter(List<TaskCenterDTO> list, Map<String, String> userMap, Map<String, String> projectMap, Map<String, String> orgMap, Map<String, ExecuteReportDTO> historyDeletedMap) {
|
||||
if (!list.isEmpty()) {
|
||||
list.forEach(item -> {
|
||||
item.setOperationName(userMap.getOrDefault(item.getOperationName(), StringUtils.EMPTY));
|
||||
item.setProjectName(projectMap.getOrDefault(item.getProjectId(), StringUtils.EMPTY));
|
||||
item.setOrganizationName(orgMap.getOrDefault(item.getProjectId(), StringUtils.EMPTY));
|
||||
item.setHistoryDeleted(MapUtils.isNotEmpty(historyDeletedMap) && !historyDeletedMap.containsKey(item.getId()));
|
||||
if (CollectionUtils.isNotEmpty(item.getChildren())) {
|
||||
processTaskCenter(item.getChildren(), userMap, projectMap, orgMap, historyDeletedMap);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,6 @@ import io.metersphere.plan.domain.TestPlanReportApiCase;
|
|||
import io.metersphere.plan.domain.TestPlanReportApiScenario;
|
||||
import io.metersphere.plan.mapper.TestPlanReportApiCaseMapper;
|
||||
import io.metersphere.plan.mapper.TestPlanReportApiScenarioMapper;
|
||||
import io.metersphere.project.mapper.ProjectApplicationMapper;
|
||||
import io.metersphere.project.mapper.ProjectTestResourcePoolMapper;
|
||||
import io.metersphere.sdk.constants.ExecStatus;
|
||||
import io.metersphere.sdk.constants.SessionConstants;
|
||||
import io.metersphere.sdk.constants.TaskCenterResourceType;
|
||||
|
@ -23,8 +21,6 @@ import io.metersphere.system.dto.sdk.BaseCondition;
|
|||
import io.metersphere.system.dto.table.TableBatchProcessDTO;
|
||||
import io.metersphere.system.dto.taskcenter.request.TaskCenterBatchRequest;
|
||||
import io.metersphere.system.dto.taskcenter.request.TaskCenterPageRequest;
|
||||
import io.metersphere.system.mapper.TestResourcePoolBlobMapper;
|
||||
import io.metersphere.system.mapper.TestResourcePoolMapper;
|
||||
import io.metersphere.system.utils.Pager;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
@ -68,14 +64,6 @@ public class TestPlanTaskCenterControllerTests extends BaseTest {
|
|||
@Resource
|
||||
private ApiScenarioReportService apiScenarioReportService;
|
||||
@Resource
|
||||
private TestResourcePoolMapper testResourcePoolMapper;
|
||||
@Resource
|
||||
private TestResourcePoolBlobMapper testResourcePoolBlobMapper;
|
||||
@Resource
|
||||
private ProjectTestResourcePoolMapper projectTestResourcePoolMapper;
|
||||
@Resource
|
||||
private ProjectApplicationMapper projectApplicationMapper;
|
||||
@Resource
|
||||
private TestPlanReportApiCaseMapper testPlanReportApiCaseMapper;
|
||||
@Resource
|
||||
private TestPlanReportApiScenarioMapper testPlanReportApiScenarioMapper;
|
||||
|
|
|
@ -9,6 +9,8 @@ VALUES
|
|||
('test-plan-report-id-3', 'test_plan_id_1', '测试一下计划报告3', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001',1, 0, null, '测试一下计划'),
|
||||
('test-plan-report-id-4', 'test_plan_id_1', '测试一下计划报告4', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 1, 0, null, '测试一下计划'),
|
||||
('test-plan-report-id-1-1', 'test_plan_id_1', '测试一下计划报告1-1', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 1, 0, 'test-plan-report-id-1', '测试一下计划'),
|
||||
('test-plan-report-id-1-2', 'test_plan_id_1', '测试一下计划报告1-2', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 1, 0, 'test-plan-report-id-1', '测试一下计划');
|
||||
('test-plan-report-id-1-2', 'test_plan_id_1', '测试一下计划报告1-2', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 1, 0, 'test-plan-report-id-1-2', '测试一下计划'),
|
||||
('test-plan-report-id-1-3', 'test_plan_id_1', '测试一下计划报告1-3', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 0, 0, 'test-plan-report-id-1-2', '测试一下计划'),
|
||||
('test-plan-report-id-1-4', 'test_plan_id_1', '测试一下计划报告1-4', 'admin', UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, UNIX_TIMESTAMP()*1000, 'MANUAL', 'RUNNING', '-', '99.99', 100.00, '100001100001', 1, 0, 'test-plan-report-id-1-4', '测试一下计划');
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue