mirror of
https://gitee.com/fit2cloud-feizhiyun/MeterSphere.git
synced 2024-12-03 12:39:12 +08:00
refactor(任务中心): 优化任务详情查看结果
This commit is contained in:
parent
a98f8bc20f
commit
d440688cbf
@ -2,10 +2,7 @@ package io.metersphere.api.controller.definition;
|
||||
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.metersphere.api.dto.definition.ApiReportBatchRequest;
|
||||
import io.metersphere.api.dto.definition.ApiReportDTO;
|
||||
import io.metersphere.api.dto.definition.ApiReportDetailDTO;
|
||||
import io.metersphere.api.dto.definition.ApiReportPageRequest;
|
||||
import io.metersphere.api.dto.definition.*;
|
||||
import io.metersphere.api.dto.report.ApiReportListDTO;
|
||||
import io.metersphere.api.service.ApiReportShareService;
|
||||
import io.metersphere.api.service.definition.ApiReportLogService;
|
||||
@ -139,7 +136,7 @@ public class ApiReportController {
|
||||
@Operation(summary = "系统-任务中心-接口用例执行任务详情-查看")
|
||||
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
||||
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ}, logical = Logical.OR)
|
||||
public List<ApiReportDetailDTO> viewCaseItemReport(@PathVariable String id) {
|
||||
public ApiTaskReportDTO viewCaseItemReport(@PathVariable String id) {
|
||||
return apiReportService.viewCaseTaskItemReport(id);
|
||||
}
|
||||
}
|
||||
|
@ -4,9 +4,11 @@ import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.metersphere.api.dto.definition.ApiReportBatchRequest;
|
||||
import io.metersphere.api.dto.definition.ApiReportPageRequest;
|
||||
import io.metersphere.api.dto.definition.ApiTaskReportDTO;
|
||||
import io.metersphere.api.dto.report.ApiScenarioReportListDTO;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioReportDTO;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioReportDetailDTO;
|
||||
import io.metersphere.api.dto.scenario.ExecTaskDetailDTO;
|
||||
import io.metersphere.api.service.ApiReportShareService;
|
||||
import io.metersphere.api.service.scenario.ApiScenarioReportLogService;
|
||||
import io.metersphere.api.service.scenario.ApiScenarioReportNoticeService;
|
||||
@ -139,7 +141,7 @@ public class ApiScenarioReportController {
|
||||
@Operation(summary = "系统-任务中心-场景用例执行任务详情-查看(任务步骤)")
|
||||
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
||||
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ}, logical = Logical.OR)
|
||||
public ApiScenarioReportDTO viewScenarioItemReport(@PathVariable String id) {
|
||||
public ExecTaskDetailDTO viewScenarioItemReport(@PathVariable String id) {
|
||||
return apiScenarioReportService.viewScenarioItemReport(id);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,47 @@
|
||||
package io.metersphere.api.dto.definition;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ApiTaskReportDTO {
|
||||
|
||||
|
||||
@Schema(description = "发起时间")
|
||||
private Long createTime;
|
||||
|
||||
@Schema(description = "开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@Schema(description = "结束时间")
|
||||
private Long endTime;
|
||||
|
||||
@Schema(description = "任务来源")
|
||||
private String taskOrigin;
|
||||
@Schema(description = "任务来源名称")
|
||||
private String taskOriginName;
|
||||
|
||||
@Schema(description = "结果")
|
||||
private String result;
|
||||
|
||||
@Schema(description = "资源池ID")
|
||||
private String resourcePoolId;
|
||||
@Schema(description = "资源池名称")
|
||||
private String resourcePoolName;
|
||||
|
||||
@Schema(description = "节点")
|
||||
private String resourcePoolNode;
|
||||
|
||||
@Schema(description = "线程ID")
|
||||
private String threadId;
|
||||
|
||||
@Schema(description = "详细信息")
|
||||
private List<ApiReportDetailDTO> apiReportDetailDTOList;
|
||||
|
||||
@Schema(description = "环境id")
|
||||
private String environmentId;
|
||||
@Schema(description = "环境名称")
|
||||
private String environmentName;
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package io.metersphere.api.dto.scenario;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ExecTaskDetailDTO extends ApiScenarioReportDTO{
|
||||
@Schema(description = "发起时间")
|
||||
private Long createTime;
|
||||
|
||||
@Schema(description = "开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@Schema(description = "结束时间")
|
||||
private Long endTime;
|
||||
|
||||
@Schema(description = "任务来源")
|
||||
private String taskOrigin;
|
||||
@Schema(description = "任务来源名称")
|
||||
private String taskOriginName;
|
||||
|
||||
|
||||
@Schema(description = "结果")
|
||||
private String result;
|
||||
|
||||
@Schema(description = "节点")
|
||||
private String resourcePoolNode;
|
||||
|
||||
@Schema(description = "线程ID")
|
||||
private String threadId;
|
||||
|
||||
}
|
@ -5,6 +5,8 @@ import io.metersphere.api.dto.definition.*;
|
||||
import io.metersphere.api.dto.report.ApiReportListDTO;
|
||||
import io.metersphere.api.mapper.*;
|
||||
import io.metersphere.api.utils.ApiDataUtils;
|
||||
import io.metersphere.plan.domain.TestPlan;
|
||||
import io.metersphere.plan.mapper.TestPlanMapper;
|
||||
import io.metersphere.sdk.constants.ExecStatus;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
import io.metersphere.sdk.domain.EnvironmentGroup;
|
||||
@ -19,6 +21,7 @@ import io.metersphere.system.domain.ExecTask;
|
||||
import io.metersphere.system.domain.ExecTaskItem;
|
||||
import io.metersphere.system.domain.TestResourcePool;
|
||||
import io.metersphere.system.domain.User;
|
||||
import io.metersphere.system.dto.taskhub.ExecTaskItemDetailDTO;
|
||||
import io.metersphere.system.mapper.ExecTaskItemMapper;
|
||||
import io.metersphere.system.mapper.ExtExecTaskMapper;
|
||||
import io.metersphere.system.mapper.TestResourcePoolMapper;
|
||||
@ -77,6 +80,8 @@ public class ApiReportService {
|
||||
private ExtExecTaskMapper extExecTaskMapper;
|
||||
@Resource
|
||||
private ExecTaskItemMapper execTaskItemMapper;
|
||||
@Resource
|
||||
private TestPlanMapper testPlanMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiReport(ApiReport report) {
|
||||
@ -315,7 +320,7 @@ public class ApiReportService {
|
||||
|
||||
public void batchExportLog(ApiReportBatchRequest request, String userId, String projectId) {
|
||||
List<String> ids = doSelectIds(request);
|
||||
if(CollectionUtils.isNotEmpty(ids)){
|
||||
if (CollectionUtils.isNotEmpty(ids)) {
|
||||
ApiReportExample example = new ApiReportExample();
|
||||
example.createCriteria().andIdIn(ids);
|
||||
List<ApiReport> reports = apiReportMapper.selectByExample(example);
|
||||
@ -323,23 +328,37 @@ public class ApiReportService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<ApiReportDetailDTO> viewCaseTaskItemReport(String id) {
|
||||
List<ExecTask> taskList = extExecTaskMapper.selectTypeByItemId(id);
|
||||
public ApiTaskReportDTO viewCaseTaskItemReport(String id) {
|
||||
List<ExecTaskItemDetailDTO> taskList = extExecTaskMapper.selectTypeByItemId(id);
|
||||
ApiTaskReportDTO apiTaskReportDTO = new ApiTaskReportDTO();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
ExecTask task = taskList.getFirst();
|
||||
ExecTaskItemDetailDTO task = taskList.getFirst();
|
||||
//设置 顶部数据
|
||||
BeanUtils.copyBean(apiTaskReportDTO, task);
|
||||
//计划组处理来源
|
||||
if (StringUtils.isNotBlank(apiTaskReportDTO.getTaskOrigin())) {
|
||||
TestPlan testPlan = testPlanMapper.selectByPrimaryKey(apiTaskReportDTO.getTaskOrigin());
|
||||
Optional.ofNullable(testPlan).ifPresent(item -> apiTaskReportDTO.setTaskOriginName(testPlan.getName()));
|
||||
}
|
||||
//资源池名称
|
||||
if (StringUtils.isNotBlank(apiTaskReportDTO.getResourcePoolId())) {
|
||||
TestResourcePool testResourcePool = testResourcePoolMapper.selectByPrimaryKey(apiTaskReportDTO.getResourcePoolId());
|
||||
Optional.ofNullable(testResourcePool).ifPresent(item -> apiTaskReportDTO.setResourcePoolName(testResourcePool.getName()));
|
||||
}
|
||||
|
||||
if (task.getIntegrated()) {
|
||||
//集合报告
|
||||
return getIntegratedItemDetail(id, task.getId());
|
||||
apiTaskReportDTO.setApiReportDetailDTOList(getIntegratedItemDetail(id, task.getId(), apiTaskReportDTO));
|
||||
} else {
|
||||
//非集合报告
|
||||
return reportDetail(id);
|
||||
apiTaskReportDTO.setApiReportDetailDTOList(reportDetail(id, apiTaskReportDTO));
|
||||
}
|
||||
}
|
||||
return new ArrayList<>();
|
||||
return apiTaskReportDTO;
|
||||
}
|
||||
|
||||
private List<ApiReportDetailDTO> getIntegratedItemDetail(String taskItemId, String taskId) {
|
||||
private List<ApiReportDetailDTO> getIntegratedItemDetail(String taskItemId, String taskId, ApiTaskReportDTO apiTaskReportDTO) {
|
||||
ExecTaskItem taskItem = execTaskItemMapper.selectByPrimaryKey(taskItemId);
|
||||
ApiReportRelateTaskExample example = new ApiReportRelateTaskExample();
|
||||
example.createCriteria().andTaskResourceIdEqualTo(taskId);
|
||||
@ -348,10 +367,11 @@ public class ApiReportService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
String reportId = apiReportRelateTasks.getFirst().getReportId();
|
||||
setEnvironment(reportId, apiTaskReportDTO);
|
||||
return getDetail(reportId, taskItem.getResourceId());
|
||||
}
|
||||
|
||||
private List<ApiReportDetailDTO> reportDetail(String id) {
|
||||
private List<ApiReportDetailDTO> reportDetail(String id, ApiTaskReportDTO apiTaskReportDTO) {
|
||||
List<ApiReportDetailDTO> list = new ArrayList<>();
|
||||
ApiReportRelateTaskExample example = new ApiReportRelateTaskExample();
|
||||
example.createCriteria().andTaskResourceIdEqualTo(id);
|
||||
@ -361,12 +381,20 @@ public class ApiReportService {
|
||||
String reportId = apiReportRelateTasks.getFirst().getReportId();
|
||||
//获取步骤id
|
||||
String stepId = getStepId(reportId);
|
||||
setEnvironment(reportId, apiTaskReportDTO);
|
||||
|
||||
list = getDetail(reportId, stepId);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private void setEnvironment(String reportId, ApiTaskReportDTO apiTaskReportDTO) {
|
||||
ApiReport apiReport = apiReportMapper.selectByPrimaryKey(reportId);
|
||||
Environment environment = environmentMapper.selectByPrimaryKey(apiReport.getEnvironmentId());
|
||||
apiTaskReportDTO.setEnvironmentId(apiReport.getEnvironmentId());
|
||||
apiTaskReportDTO.setEnvironmentName(environment.getName());
|
||||
}
|
||||
|
||||
private String getStepId(String reportId) {
|
||||
ApiReportStepExample example = new ApiReportStepExample();
|
||||
example.createCriteria().andReportIdEqualTo(reportId);
|
||||
|
@ -8,7 +8,10 @@ import io.metersphere.api.dto.report.ApiScenarioReportListDTO;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioReportDTO;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioReportDetailDTO;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioReportStepDTO;
|
||||
import io.metersphere.api.dto.scenario.ExecTaskDetailDTO;
|
||||
import io.metersphere.api.mapper.*;
|
||||
import io.metersphere.plan.domain.TestPlan;
|
||||
import io.metersphere.plan.mapper.TestPlanMapper;
|
||||
import io.metersphere.sdk.constants.ExecStatus;
|
||||
import io.metersphere.sdk.constants.ResultStatus;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
@ -22,6 +25,7 @@ import io.metersphere.system.domain.ExecTask;
|
||||
import io.metersphere.system.domain.ExecTaskItem;
|
||||
import io.metersphere.system.domain.TestResourcePool;
|
||||
import io.metersphere.system.domain.User;
|
||||
import io.metersphere.system.dto.taskhub.ExecTaskItemDetailDTO;
|
||||
import io.metersphere.system.mapper.ExecTaskItemMapper;
|
||||
import io.metersphere.system.mapper.ExtExecTaskMapper;
|
||||
import io.metersphere.system.mapper.TestResourcePoolMapper;
|
||||
@ -81,6 +85,8 @@ public class ApiScenarioReportService {
|
||||
private ExtExecTaskMapper extExecTaskMapper;
|
||||
@Resource
|
||||
private ExecTaskItemMapper execTaskItemMapper;
|
||||
@Resource
|
||||
private TestPlanMapper testPlanMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiScenarioReport(ApiScenarioReport report, ApiReportRelateTask taskRelation) {
|
||||
@ -449,19 +455,30 @@ public class ApiScenarioReportService {
|
||||
}
|
||||
}
|
||||
|
||||
public ApiScenarioReportDTO viewScenarioItemReport(String id) {
|
||||
List<ExecTask> taskList = extExecTaskMapper.selectTypeByItemId(id);
|
||||
public ExecTaskDetailDTO viewScenarioItemReport(String id) {
|
||||
List<ExecTaskItemDetailDTO> taskList = extExecTaskMapper.selectTypeByItemId(id);
|
||||
ExecTaskDetailDTO apiTaskReportDTO = new ExecTaskDetailDTO();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
if (taskList.getFirst().getIntegrated()) {
|
||||
ExecTaskItemDetailDTO task = taskList.getFirst();
|
||||
//设置 顶部数据
|
||||
BeanUtils.copyBean(apiTaskReportDTO, task);
|
||||
//计划组处理来源
|
||||
if (StringUtils.isNotBlank(apiTaskReportDTO.getTaskOrigin())) {
|
||||
TestPlan testPlan = testPlanMapper.selectByPrimaryKey(apiTaskReportDTO.getTaskOrigin());
|
||||
Optional.ofNullable(testPlan).ifPresent(item -> apiTaskReportDTO.setTaskOriginName(testPlan.getName()));
|
||||
}
|
||||
if (task.getIntegrated()) {
|
||||
//场景集合报告
|
||||
return getScenarioReportDetail(taskList.getFirst().getId(), id);
|
||||
ApiScenarioReportDTO scenarioReportDetail = getScenarioReportDetail(id, task.getId());
|
||||
BeanUtils.copyBean(apiTaskReportDTO, scenarioReportDetail);
|
||||
} else {
|
||||
//场景非集合报告
|
||||
return scenarioReportDetail(id);
|
||||
ApiScenarioReportDTO scenarioReportDetail = scenarioReportDetail(id);
|
||||
BeanUtils.copyBean(apiTaskReportDTO, scenarioReportDetail);
|
||||
}
|
||||
}
|
||||
return new ApiScenarioReportDTO();
|
||||
return apiTaskReportDTO;
|
||||
}
|
||||
|
||||
private ApiScenarioReportDTO getScenarioReportDetail(String taskId, String taskItemId) {
|
||||
|
@ -0,0 +1,47 @@
|
||||
package io.metersphere.system.dto.taskhub;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author wx
|
||||
*/
|
||||
@Data
|
||||
public class ExecTaskItemDetailDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "发起时间")
|
||||
private Long createTime;
|
||||
|
||||
@Schema(description = "开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@Schema(description = "结束时间")
|
||||
private Long endTime;
|
||||
|
||||
@Schema(description = "任务来源")
|
||||
private String taskOrigin;
|
||||
|
||||
@Schema(description = "结果")
|
||||
private String result;
|
||||
|
||||
@Schema(description = "资源池ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private String resourcePoolId;
|
||||
|
||||
@Schema(description = "节点")
|
||||
private String resourcePoolNode;
|
||||
|
||||
@Schema(description = "线程ID")
|
||||
private String threadId;
|
||||
|
||||
@Schema(description = "是否集合报告")
|
||||
private Boolean integrated;
|
||||
}
|
@ -3,6 +3,7 @@ package io.metersphere.system.mapper;
|
||||
import io.metersphere.system.domain.ExecTask;
|
||||
import io.metersphere.system.dto.sdk.BasePageRequest;
|
||||
import io.metersphere.system.dto.table.TableBatchProcessDTO;
|
||||
import io.metersphere.system.dto.taskhub.ExecTaskItemDetailDTO;
|
||||
import io.metersphere.system.dto.taskhub.TaskHubDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@ -28,5 +29,5 @@ public interface ExtExecTaskMapper {
|
||||
*/
|
||||
List<String> getTaskIdsByTime(@Param("timeMills") long timeMills, @Param("projectId") String projectId);
|
||||
|
||||
List<ExecTask> selectTypeByItemId(@Param("itemId") String itemId);
|
||||
List<ExecTaskItemDetailDTO> selectTypeByItemId(@Param("itemId") String itemId);
|
||||
}
|
||||
|
@ -120,7 +120,16 @@
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectTypeByItemId" resultType="io.metersphere.system.domain.ExecTask">
|
||||
select exec_task.* from exec_task inner join exec_task_item on exec_task.id = exec_task_item.task_id where exec_task_item.id = #{itemId}
|
||||
<select id="selectTypeByItemId" resultType="io.metersphere.system.dto.taskhub.ExecTaskItemDetailDTO">
|
||||
select exec_task.id,
|
||||
exec_task.integrated,
|
||||
exec_task.create_time as createTime,
|
||||
exec_task_item.result as result,
|
||||
exec_task_item.resource_pool_id as resourcePoolId,
|
||||
exec_task_item.resource_pool_node as resourcePoolNode,
|
||||
exec_task_item.thread_id as threadId,
|
||||
exec_task_item.start_time as startTime,
|
||||
exec_task_item.end_time as endTime
|
||||
from exec_task inner join exec_task_item on exec_task.id = exec_task_item.task_id where exec_task_item.id = #{itemId}
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user