refactor(接口测试): 场景执行历史&执行结果改造
This commit is contained in:
parent
796ae6bb7d
commit
9552f43d1a
|
@ -135,7 +135,8 @@ public class ApiReportController {
|
||||||
@GetMapping("/task-report/{id}")
|
@GetMapping("/task-report/{id}")
|
||||||
@Operation(summary = "系统-任务中心-接口用例执行任务详情-查看")
|
@Operation(summary = "系统-任务中心-接口用例执行任务详情-查看")
|
||||||
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
||||||
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ}, logical = Logical.OR)
|
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ,
|
||||||
|
PermissionConstants.PROJECT_API_REPORT_READ, PermissionConstants.PROJECT_API_DEFINITION_CASE_EXECUTE}, logical = Logical.OR)
|
||||||
public ApiTaskReportDTO viewCaseItemReport(@PathVariable String id) {
|
public ApiTaskReportDTO viewCaseItemReport(@PathVariable String id) {
|
||||||
return apiReportService.viewCaseTaskItemReport(id);
|
return apiReportService.viewCaseTaskItemReport(id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@ public class ApiTestCaseController {
|
||||||
public Pager<List<ApiTestCaseDTO>> page(@Validated @RequestBody ApiTestCasePageRequest request) {
|
public Pager<List<ApiTestCaseDTO>> page(@Validated @RequestBody ApiTestCasePageRequest request) {
|
||||||
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(),
|
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(),
|
||||||
StringUtils.isNotBlank(request.getSortString("id")) ? request.getSortString("id") : "pos desc, id desc");
|
StringUtils.isNotBlank(request.getSortString("id")) ? request.getSortString("id") : "pos desc, id desc");
|
||||||
return PageUtils.setPageInfo(page, apiTestCaseService.page(request, false, true,null));
|
return PageUtils.setPageInfo(page, apiTestCaseService.page(request, false, true, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/statistics")
|
@PostMapping(value = "/statistics")
|
||||||
|
@ -248,8 +248,11 @@ public class ApiTestCaseController {
|
||||||
@RequiresPermissions(logical = Logical.OR, value = {PermissionConstants.PROJECT_API_DEFINITION_CASE_READ, PermissionConstants.PROJECT_API_DEFINITION_CASE_UPDATE})
|
@RequiresPermissions(logical = Logical.OR, value = {PermissionConstants.PROJECT_API_DEFINITION_CASE_READ, PermissionConstants.PROJECT_API_DEFINITION_CASE_UPDATE})
|
||||||
@CheckOwner(resourceId = "#request.getId()", resourceType = "api_test_case")
|
@CheckOwner(resourceId = "#request.getId()", resourceType = "api_test_case")
|
||||||
public Pager<List<ExecuteReportDTO>> getExecuteList(@Validated @RequestBody ExecutePageRequest request) {
|
public Pager<List<ExecuteReportDTO>> getExecuteList(@Validated @RequestBody ExecutePageRequest request) {
|
||||||
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(),
|
String sort = StringUtils.isNotBlank(request.getSortString()) ? request.getSortString() : "eti.id desc";
|
||||||
StringUtils.isNotBlank(request.getSortString()) ? request.getSortString() : "start_time desc");
|
if (StringUtils.isNotBlank(sort)) {
|
||||||
|
sort = sort.replace("start_time", "et.create_time");
|
||||||
|
}
|
||||||
|
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(), sort);
|
||||||
return PageUtils.setPageInfo(page, apiTestCaseService.getExecuteList(request));
|
return PageUtils.setPageInfo(page, apiTestCaseService.getExecuteList(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -274,8 +274,11 @@ public class ApiScenarioController {
|
||||||
@RequiresPermissions(logical = Logical.OR, value = {PermissionConstants.PROJECT_API_SCENARIO_READ, PermissionConstants.PROJECT_API_SCENARIO_UPDATE})
|
@RequiresPermissions(logical = Logical.OR, value = {PermissionConstants.PROJECT_API_SCENARIO_READ, PermissionConstants.PROJECT_API_SCENARIO_UPDATE})
|
||||||
@CheckOwner(resourceId = "#request.getId()", resourceType = "api_scenario")
|
@CheckOwner(resourceId = "#request.getId()", resourceType = "api_scenario")
|
||||||
public Pager<List<ExecuteReportDTO>> getExecuteList(@Validated @RequestBody ExecutePageRequest request) {
|
public Pager<List<ExecuteReportDTO>> getExecuteList(@Validated @RequestBody ExecutePageRequest request) {
|
||||||
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(),
|
String sort = StringUtils.isNotBlank(request.getSortString()) ? request.getSortString() : "eti.id desc";
|
||||||
StringUtils.isNotBlank(request.getSortString()) ? request.getSortString() : "start_time desc");
|
if (StringUtils.isNotBlank(sort)) {
|
||||||
|
sort = sort.replace("start_time", "et.create_time");
|
||||||
|
}
|
||||||
|
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(), sort);
|
||||||
return PageUtils.setPageInfo(page, apiScenarioService.getExecuteList(request));
|
return PageUtils.setPageInfo(page, apiScenarioService.getExecuteList(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,8 @@ public class ApiScenarioReportController {
|
||||||
@GetMapping("/task-step/{id}")
|
@GetMapping("/task-step/{id}")
|
||||||
@Operation(summary = "系统-任务中心-场景用例执行任务详情-查看(任务步骤)")
|
@Operation(summary = "系统-任务中心-场景用例执行任务详情-查看(任务步骤)")
|
||||||
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
||||||
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ}, logical = Logical.OR)
|
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ,
|
||||||
|
PermissionConstants.PROJECT_API_REPORT_READ, PermissionConstants.PROJECT_API_SCENARIO_EXECUTE}, logical = Logical.OR)
|
||||||
public ExecTaskDetailDTO viewScenarioItemReport(@PathVariable String id) {
|
public ExecTaskDetailDTO viewScenarioItemReport(@PathVariable String id) {
|
||||||
return apiScenarioReportService.viewScenarioItemReport(id);
|
return apiScenarioReportService.viewScenarioItemReport(id);
|
||||||
}
|
}
|
||||||
|
@ -148,9 +149,10 @@ public class ApiScenarioReportController {
|
||||||
@GetMapping("/task-report/{reportId}/{stepId}")
|
@GetMapping("/task-report/{reportId}/{stepId}")
|
||||||
@Operation(summary = "系统-任务中心-场景用例执行任务详情-查看(步骤结果)")
|
@Operation(summary = "系统-任务中心-场景用例执行任务详情-查看(步骤结果)")
|
||||||
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
@RequiresPermissions(value = {PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ,
|
||||||
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ}, logical = Logical.OR)
|
PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ, PermissionConstants.PROJECT_CASE_TASK_CENTER_READ,
|
||||||
|
PermissionConstants.PROJECT_API_REPORT_READ, PermissionConstants.PROJECT_API_SCENARIO_EXECUTE}, logical = Logical.OR)
|
||||||
public List<ApiScenarioReportDetailDTO> getScenarioReportDetail(@PathVariable String reportId,
|
public List<ApiScenarioReportDetailDTO> getScenarioReportDetail(@PathVariable String reportId,
|
||||||
@PathVariable String stepId) {
|
@PathVariable String stepId) {
|
||||||
return apiScenarioReportService.getDetail(reportId, stepId);
|
return apiScenarioReportService.getDetail(reportId, stepId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package io.metersphere.api.dto.definition;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wx
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ExecHistoryDTO implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "任务项id")
|
||||||
|
private String itemId;
|
||||||
|
|
||||||
|
@Schema(description = "任务id")
|
||||||
|
private String taskId;
|
||||||
|
|
||||||
|
@Schema(description = "执行方式")
|
||||||
|
private String triggerMode;
|
||||||
|
|
||||||
|
@Schema(description = "执行结果")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "状态")
|
||||||
|
private String execStatus;
|
||||||
|
|
||||||
|
@Schema(description = "操作人")
|
||||||
|
private String createUser;
|
||||||
|
|
||||||
|
@Schema(description = "操作时间")
|
||||||
|
private Long startTime;
|
||||||
|
|
||||||
|
@Schema(description = "是否集合报告")
|
||||||
|
private Boolean integrated;
|
||||||
|
|
||||||
|
@Schema(description = "测试计划id")
|
||||||
|
private String testPlanId;
|
||||||
|
|
||||||
|
@Schema(description = "测试计划Num")
|
||||||
|
private String testPlanNum;
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package io.metersphere.api.mapper;
|
||||||
|
|
||||||
import io.metersphere.api.domain.ApiScenario;
|
import io.metersphere.api.domain.ApiScenario;
|
||||||
import io.metersphere.api.dto.ApiResourceBatchRunInfo;
|
import io.metersphere.api.dto.ApiResourceBatchRunInfo;
|
||||||
|
import io.metersphere.api.dto.definition.ExecHistoryDTO;
|
||||||
import io.metersphere.api.dto.definition.ExecutePageRequest;
|
import io.metersphere.api.dto.definition.ExecutePageRequest;
|
||||||
import io.metersphere.api.dto.definition.ExecuteReportDTO;
|
import io.metersphere.api.dto.definition.ExecuteReportDTO;
|
||||||
import io.metersphere.api.dto.scenario.*;
|
import io.metersphere.api.dto.scenario.*;
|
||||||
|
@ -105,4 +106,5 @@ public interface ExtApiScenarioMapper {
|
||||||
|
|
||||||
List<ProjectUserCreateCount> userCreateApiScenarioCount(@Param("projectId") String projectId, @Param("startTime") long startTime, @Param("endTime") long endTime, @Param("userIds") Set<String> userIds);
|
List<ProjectUserCreateCount> userCreateApiScenarioCount(@Param("projectId") String projectId, @Param("startTime") long startTime, @Param("endTime") long endTime, @Param("userIds") Set<String> userIds);
|
||||||
|
|
||||||
|
List<ExecHistoryDTO> selectExecHistory(@Param("request") ExecutePageRequest request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -798,4 +798,52 @@
|
||||||
group by api_scenario.create_user;
|
group by api_scenario.create_user;
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectExecHistory" resultType="io.metersphere.api.dto.definition.ExecHistoryDTO">
|
||||||
|
SELECT
|
||||||
|
et.trigger_mode,
|
||||||
|
et.task_name,
|
||||||
|
eti.result as status,
|
||||||
|
eti.`status` as execStatus,
|
||||||
|
eti.executor as createUser,
|
||||||
|
eti.deleted,
|
||||||
|
et.create_time as startTime,
|
||||||
|
et.integrated,
|
||||||
|
tp.id as testPlanId,
|
||||||
|
tp.num as testPlanNum,
|
||||||
|
eti.task_id as taskId,
|
||||||
|
eti.id as itemId
|
||||||
|
FROM
|
||||||
|
exec_task_item eti
|
||||||
|
left JOIN exec_task et ON eti.task_id = et.id
|
||||||
|
left JOIN test_plan tp on eti.task_origin = tp.id
|
||||||
|
where eti.case_id = #{request.id}
|
||||||
|
<include refid="history_filters">
|
||||||
|
<property name="filter" value="request.filter"/>
|
||||||
|
</include>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<sql id="history_filters">
|
||||||
|
<if test="${filter} != null and ${filter}.size() > 0">
|
||||||
|
<foreach collection="${filter}.entrySet()" index="key" item="values">
|
||||||
|
<if test="values != null and values.size() > 0">
|
||||||
|
<choose>
|
||||||
|
<when test="key=='integrated'">
|
||||||
|
and et.integrated in
|
||||||
|
<include refid="io.metersphere.system.mapper.BaseMapper.filterInWrapper"/>
|
||||||
|
</when>
|
||||||
|
<when test="key=='status'">
|
||||||
|
and eti.result in
|
||||||
|
<include refid="io.metersphere.system.mapper.BaseMapper.filterInWrapper"/>
|
||||||
|
</when>
|
||||||
|
<when test="key=='triggerMode'">
|
||||||
|
and et.trigger_mode in
|
||||||
|
<include refid="io.metersphere.system.mapper.BaseMapper.filterInWrapper"/>
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
|
</if>
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</sql>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -58,7 +58,6 @@ import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -108,6 +107,8 @@ public class ApiTestCaseService extends MoveNodeService {
|
||||||
private FunctionalCaseTestMapper functionalCaseTestMapper;
|
private FunctionalCaseTestMapper functionalCaseTestMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private UserMapper userMapper;
|
private UserMapper userMapper;
|
||||||
|
@Resource
|
||||||
|
private ExtApiScenarioMapper extApiScenarioMapper;
|
||||||
|
|
||||||
private static final String CASE_TABLE = "api_test_case";
|
private static final String CASE_TABLE = "api_test_case";
|
||||||
|
|
||||||
|
@ -342,6 +343,7 @@ public class ApiTestCaseService extends MoveNodeService {
|
||||||
}
|
}
|
||||||
return returnList;
|
return returnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildApiTestCaseDTO(List<ApiTestCaseDTO> apiCaseLists) {
|
private void buildApiTestCaseDTO(List<ApiTestCaseDTO> apiCaseLists) {
|
||||||
if (CollectionUtils.isNotEmpty(apiCaseLists)) {
|
if (CollectionUtils.isNotEmpty(apiCaseLists)) {
|
||||||
List<String> userIds = new ArrayList<>();
|
List<String> userIds = new ArrayList<>();
|
||||||
|
@ -569,46 +571,32 @@ public class ApiTestCaseService extends MoveNodeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ExecuteReportDTO> getExecuteList(ExecutePageRequest request) {
|
public List<ExecuteReportDTO> getExecuteList(ExecutePageRequest request) {
|
||||||
List<ExecuteReportDTO> executeList = extApiTestCaseMapper.getExecuteList(request);
|
List<ExecHistoryDTO> historyList = extApiScenarioMapper.selectExecHistory(request);
|
||||||
if (CollectionUtils.isEmpty(executeList)) {
|
List<ExecuteReportDTO> executeList = handleList(historyList);
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
Set<String> userSet = executeList.stream()
|
|
||||||
.flatMap(apiReport -> Stream.of(apiReport.getCreateUser()))
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
Map<String, String> userMap = userLoginService.getUserNameMap(new ArrayList<>(userSet));
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
||||||
//执行历史列表
|
|
||||||
List<String> reportIds = executeList.stream().map(ExecuteReportDTO::getId).toList();
|
|
||||||
Map<String, ExecuteReportDTO> historyDeletedMap = new HashMap<>();
|
|
||||||
if (CollectionUtils.isNotEmpty(reportIds)) {
|
|
||||||
List<ExecuteReportDTO> historyDeletedList = extApiReportMapper.getHistoryDeleted(reportIds);
|
|
||||||
historyDeletedMap = historyDeletedList.stream().collect(Collectors.toMap(ExecuteReportDTO::getId, Function.identity()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, String> testPlanIdMap = executeList.stream()
|
|
||||||
.filter(apiReport -> !StringUtils.equals(apiReport.getTestPlanId(), "NONE"))
|
|
||||||
.collect(Collectors.toMap(ExecuteReportDTO::getId, ExecuteReportDTO::getTestPlanId));
|
|
||||||
List<String> testPlanIds = new ArrayList<>(testPlanIdMap.keySet());
|
|
||||||
Map<String, String> testPlanNumMap = new HashMap<>();
|
|
||||||
if (CollectionUtils.isNotEmpty(testPlanIds)) {
|
|
||||||
List<ExecuteReportDTO> testPlanNameLists = extApiTestCaseMapper.getTestPlanNum(testPlanIds);
|
|
||||||
testPlanNumMap = testPlanNameLists.stream().collect(Collectors.toMap(ExecuteReportDTO::getId, ExecuteReportDTO::getTestPlanNum));
|
|
||||||
}
|
|
||||||
Map<String, ExecuteReportDTO> finalHistoryDeletedMap = historyDeletedMap;
|
|
||||||
Map<String, String> finalTestPlanNumMap = testPlanNumMap;
|
|
||||||
executeList.forEach(apiReport -> {
|
|
||||||
apiReport.setOperationUser(userMap.get(apiReport.getCreateUser()));
|
|
||||||
Date date = new Date(apiReport.getStartTime());
|
|
||||||
apiReport.setNum(sdf.format(date));
|
|
||||||
apiReport.setHistoryDeleted(MapUtils.isNotEmpty(finalHistoryDeletedMap) && !finalHistoryDeletedMap.containsKey(apiReport.getId()));
|
|
||||||
if (MapUtils.isNotEmpty(testPlanIdMap) && testPlanIdMap.containsKey(apiReport.getId())) {
|
|
||||||
apiReport.setTestPlanNum(StringUtils.join(Translator.get("test_plan"), ": ", finalTestPlanNumMap.get(apiReport.getId())));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return executeList;
|
return executeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<ExecuteReportDTO> handleList(List<ExecHistoryDTO> historyList) {
|
||||||
|
List<ExecuteReportDTO> executeReportDTOList = new ArrayList<>();
|
||||||
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(historyList)) {
|
||||||
|
List<String> userIds = historyList.stream().map(ExecHistoryDTO::getCreateUser).toList();
|
||||||
|
Map<String, String> userNameMap = userLoginService.getUserNameMap(userIds);
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
|
historyList.forEach(item -> {
|
||||||
|
ExecuteReportDTO reportDTO = new ExecuteReportDTO();
|
||||||
|
BeanUtils.copyBean(reportDTO, item);
|
||||||
|
reportDTO.setOperationUser(userNameMap.get(item.getCreateUser()));
|
||||||
|
reportDTO.setId(item.getItemId());
|
||||||
|
reportDTO.setNum(sdf.format(item.getStartTime()));
|
||||||
|
if (StringUtils.isNotBlank(item.getTestPlanNum())) {
|
||||||
|
reportDTO.setTestPlanNum(StringUtils.join(Translator.get("test_plan"), ": ", item.getTestPlanNum()));
|
||||||
|
}
|
||||||
|
executeReportDTOList.add(reportDTO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return executeReportDTOList;
|
||||||
|
}
|
||||||
|
|
||||||
public List<OperationHistoryDTO> operationHistoryList(OperationHistoryRequest request) {
|
public List<OperationHistoryDTO> operationHistoryList(OperationHistoryRequest request) {
|
||||||
return operationHistoryService.listWidthTable(request, CASE_TABLE);
|
return operationHistoryService.listWidthTable(request, CASE_TABLE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import io.metersphere.api.controller.result.ApiResultCode;
|
||||||
import io.metersphere.api.domain.*;
|
import io.metersphere.api.domain.*;
|
||||||
import io.metersphere.api.dto.*;
|
import io.metersphere.api.dto.*;
|
||||||
import io.metersphere.api.dto.debug.ApiFileResourceUpdateRequest;
|
import io.metersphere.api.dto.debug.ApiFileResourceUpdateRequest;
|
||||||
|
import io.metersphere.api.dto.definition.ExecHistoryDTO;
|
||||||
import io.metersphere.api.dto.definition.ExecutePageRequest;
|
import io.metersphere.api.dto.definition.ExecutePageRequest;
|
||||||
import io.metersphere.api.dto.definition.ExecuteReportDTO;
|
import io.metersphere.api.dto.definition.ExecuteReportDTO;
|
||||||
import io.metersphere.api.dto.export.MetersphereApiScenarioExportResponse;
|
import io.metersphere.api.dto.export.MetersphereApiScenarioExportResponse;
|
||||||
|
@ -177,6 +178,8 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
public static final String SCHEDULE = "Schedule";
|
public static final String SCHEDULE = "Schedule";
|
||||||
private static final String SCENARIO_TABLE = "api_scenario";
|
private static final String SCENARIO_TABLE = "api_scenario";
|
||||||
private static final String SCENARIO = "SCENARIO";
|
private static final String SCENARIO = "SCENARIO";
|
||||||
|
@Resource
|
||||||
|
private ApiReportRelateTaskMapper apiReportRelateTaskMapper;
|
||||||
|
|
||||||
|
|
||||||
public List<ApiScenarioDTO> getScenarioPage(ApiScenarioPageRequest request, boolean isRepeat, String testPlanId) {
|
public List<ApiScenarioDTO> getScenarioPage(ApiScenarioPageRequest request, boolean isRepeat, String testPlanId) {
|
||||||
|
@ -1002,7 +1005,7 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
* 获取待更新的 ApiScenarioStep 列表
|
* 获取待更新的 ApiScenarioStep 列表
|
||||||
*/
|
*/
|
||||||
public List<ApiScenarioStep> getApiScenarioSteps(ApiScenarioStepCommonDTO parent,
|
public List<ApiScenarioStep> getApiScenarioSteps(ApiScenarioStepCommonDTO parent,
|
||||||
List<ApiScenarioStepRequest> steps, List<ApiScenarioCsvStep> csvSteps) {
|
List<ApiScenarioStepRequest> steps, List<ApiScenarioCsvStep> csvSteps) {
|
||||||
if (CollectionUtils.isEmpty(steps)) {
|
if (CollectionUtils.isEmpty(steps)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
@ -1462,6 +1465,7 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
return getStepBlobByIds(stepIdList).stream()
|
return getStepBlobByIds(stepIdList).stream()
|
||||||
.collect(Collectors.toMap(ApiScenarioStepBlob::getId, blob -> new String(blob.getContent())));
|
.collect(Collectors.toMap(ApiScenarioStepBlob::getId, blob -> new String(blob.getContent())));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ApiScenarioStepBlob> getStepBlobByIds(List<String> stepIds) {
|
public List<ApiScenarioStepBlob> getStepBlobByIds(List<String> stepIds) {
|
||||||
if (CollectionUtils.isEmpty(stepIds)) {
|
if (CollectionUtils.isEmpty(stepIds)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
@ -1736,9 +1740,9 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
* @param scenarioStepMap 所有场景步骤,key 为场景ID,value 为子步骤列表
|
* @param scenarioStepMap 所有场景步骤,key 为场景ID,value 为子步骤列表
|
||||||
*/
|
*/
|
||||||
public List<ApiScenarioStepDTO> buildStepTree(List<ApiScenarioStepDTO> steps,
|
public List<ApiScenarioStepDTO> buildStepTree(List<ApiScenarioStepDTO> steps,
|
||||||
Map<String, List<ApiScenarioStepDTO>> parentStepMap,
|
Map<String, List<ApiScenarioStepDTO>> parentStepMap,
|
||||||
Map<String, List<ApiScenarioStepDTO>> scenarioStepMap,
|
Map<String, List<ApiScenarioStepDTO>> scenarioStepMap,
|
||||||
Set<String> stepIdSet) {
|
Set<String> stepIdSet) {
|
||||||
if (CollectionUtils.isEmpty(steps)) {
|
if (CollectionUtils.isEmpty(steps)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
@ -2377,46 +2381,11 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ExecuteReportDTO> getExecuteList(ExecutePageRequest request) {
|
public List<ExecuteReportDTO> getExecuteList(ExecutePageRequest request) {
|
||||||
List<ExecuteReportDTO> executeList = extApiScenarioMapper.getExecuteList(request);
|
return apiTestCaseService.getExecuteList(request);
|
||||||
if (CollectionUtils.isEmpty(executeList)) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
Set<String> userSet = executeList.stream()
|
|
||||||
.flatMap(apiReport -> Stream.of(apiReport.getCreateUser()))
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
//执行历史列表
|
|
||||||
List<String> reportIds = executeList.stream().map(ExecuteReportDTO::getId).toList();
|
|
||||||
Map<String, ExecuteReportDTO> historyDeletedMap = new HashMap<>();
|
|
||||||
if (CollectionUtils.isNotEmpty(reportIds)) {
|
|
||||||
List<ExecuteReportDTO> historyDeletedList = extApiScenarioReportMapper.getHistoryDeleted(reportIds);
|
|
||||||
historyDeletedMap = historyDeletedList.stream().collect(Collectors.toMap(ExecuteReportDTO::getId, Function.identity()));
|
|
||||||
}
|
|
||||||
Map<String, String> testPlanIdMap = executeList.stream()
|
|
||||||
.filter(apiReport -> !StringUtils.equals(apiReport.getTestPlanId(), "NONE"))
|
|
||||||
.collect(Collectors.toMap(ExecuteReportDTO::getId, ExecuteReportDTO::getTestPlanId));
|
|
||||||
List<String> testPlanIds = new ArrayList<>(testPlanIdMap.keySet());
|
|
||||||
Map<String, String> testPlanNumMap = new HashMap<>();
|
|
||||||
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(testPlanIds)) {
|
|
||||||
List<ExecuteReportDTO> testPlanNameLists = extApiScenarioReportMapper.getTestPlanNum(testPlanIds);
|
|
||||||
testPlanNumMap = testPlanNameLists.stream().collect(Collectors.toMap(ExecuteReportDTO::getId, ExecuteReportDTO::getTestPlanNum));
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, String> userMap = userLoginService.getUserNameMap(new ArrayList<>(userSet));
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
||||||
Map<String, ExecuteReportDTO> finalHistoryDeletedMap = historyDeletedMap;
|
|
||||||
Map<String, String> finalTestPlanNumMap = testPlanNumMap;
|
|
||||||
executeList.forEach(apiReport -> {
|
|
||||||
apiReport.setOperationUser(userMap.get(apiReport.getCreateUser()));
|
|
||||||
Date date = new Date(apiReport.getStartTime());
|
|
||||||
apiReport.setNum(sdf.format(date));
|
|
||||||
apiReport.setHistoryDeleted(MapUtils.isNotEmpty(finalHistoryDeletedMap) && !finalHistoryDeletedMap.containsKey(apiReport.getId()));
|
|
||||||
if (MapUtils.isNotEmpty(testPlanIdMap) && testPlanIdMap.containsKey(apiReport.getId())) {
|
|
||||||
apiReport.setTestPlanNum(StringUtils.join(Translator.get("test_plan"), ": ", finalTestPlanNumMap.get(apiReport.getId())));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return executeList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<OperationHistoryDTO> operationHistoryList(OperationHistoryRequest request) {
|
public List<OperationHistoryDTO> operationHistoryList(OperationHistoryRequest request) {
|
||||||
return operationHistoryService.listWidthTable(request, SCENARIO_TABLE);
|
return operationHistoryService.listWidthTable(request, SCENARIO_TABLE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class TestPlanApiCaseBatchRunService {
|
||||||
// 初始化任务
|
// 初始化任务
|
||||||
ExecTask execTask = initExecTask(testPlanApiCases.size(), project, userId);
|
ExecTask execTask = initExecTask(testPlanApiCases.size(), project, userId);
|
||||||
// 初始化任务项
|
// 初始化任务项
|
||||||
initExecTaskItem(testPlanApiCases, userId, project, execTask);
|
initExecTaskItem(testPlanApiCases, userId, project, execTask, testPlan.getId());
|
||||||
|
|
||||||
TestPlanCollection finalRootCollection = rootCollection;
|
TestPlanCollection finalRootCollection = rootCollection;
|
||||||
List<TestPlanCollection> finalTestPlanCollections = testPlanCollections;
|
List<TestPlanCollection> finalTestPlanCollections = testPlanCollections;
|
||||||
|
@ -296,7 +296,7 @@ public class TestPlanApiCaseBatchRunService {
|
||||||
return testPlanApiCases;
|
return testPlanApiCases;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ExecTaskItem> initExecTaskItem(List<TestPlanApiCaseBatchRunDTO> apiTestCases, String userId, Project project, ExecTask execTask) {
|
private List<ExecTaskItem> initExecTaskItem(List<TestPlanApiCaseBatchRunDTO> apiTestCases, String userId, Project project, ExecTask execTask, String testPlanId) {
|
||||||
List<ExecTaskItem> execTaskItems = new ArrayList<>(apiTestCases.size());
|
List<ExecTaskItem> execTaskItems = new ArrayList<>(apiTestCases.size());
|
||||||
for (TestPlanApiCaseBatchRunDTO apiTestCase : apiTestCases) {
|
for (TestPlanApiCaseBatchRunDTO apiTestCase : apiTestCases) {
|
||||||
ExecTaskItem execTaskItem = apiCommonService.newExecTaskItem(execTask.getId(), project.getId(), userId);
|
ExecTaskItem execTaskItem = apiCommonService.newExecTaskItem(execTask.getId(), project.getId(), userId);
|
||||||
|
@ -304,6 +304,7 @@ public class TestPlanApiCaseBatchRunService {
|
||||||
execTaskItem.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_CASE.name());
|
execTaskItem.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_CASE.name());
|
||||||
execTaskItem.setResourceId(apiTestCase.getId());
|
execTaskItem.setResourceId(apiTestCase.getId());
|
||||||
execTaskItem.setCaseId(apiTestCase.getCaseId());
|
execTaskItem.setCaseId(apiTestCase.getCaseId());
|
||||||
|
execTaskItem.setTaskOrigin(testPlanId);
|
||||||
execTaskItem.setResourceName(apiTestCase.getName());
|
execTaskItem.setResourceName(apiTestCase.getName());
|
||||||
execTaskItem.setCollectionId(apiTestCase.getTestPlanCollectionId());
|
execTaskItem.setCollectionId(apiTestCase.getTestPlanCollectionId());
|
||||||
execTaskItems.add(execTaskItem);
|
execTaskItems.add(execTaskItem);
|
||||||
|
|
|
@ -114,7 +114,7 @@ public class TestPlanApiScenarioBatchRunService {
|
||||||
ExecTask execTask = initExecTask(testPlanApiScenarios.size(), project, userId);
|
ExecTask execTask = initExecTask(testPlanApiScenarios.size(), project, userId);
|
||||||
|
|
||||||
// 初始化任务项
|
// 初始化任务项
|
||||||
initExecTaskItem(testPlanApiScenarios, userId, project, execTask);
|
initExecTaskItem(testPlanApiScenarios, userId, project, execTask, testPlan.getId());
|
||||||
|
|
||||||
TestPlanCollection finalRootCollection = rootCollection;
|
TestPlanCollection finalRootCollection = rootCollection;
|
||||||
List<TestPlanCollection> finalTestPlanCollections = testPlanCollections;
|
List<TestPlanCollection> finalTestPlanCollections = testPlanCollections;
|
||||||
|
@ -274,7 +274,7 @@ public class TestPlanApiScenarioBatchRunService {
|
||||||
return execTask;
|
return execTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ExecTaskItem> initExecTaskItem(List<TestPlanApiScenarioBatchRunDTO> apiTestCases, String userId, Project project, ExecTask execTask) {
|
private List<ExecTaskItem> initExecTaskItem(List<TestPlanApiScenarioBatchRunDTO> apiTestCases, String userId, Project project, ExecTask execTask, String testPlanId) {
|
||||||
List<ExecTaskItem> execTaskItems = new ArrayList<>(apiTestCases.size());
|
List<ExecTaskItem> execTaskItems = new ArrayList<>(apiTestCases.size());
|
||||||
for (TestPlanApiScenarioBatchRunDTO testPlanApiScenario : apiTestCases) {
|
for (TestPlanApiScenarioBatchRunDTO testPlanApiScenario : apiTestCases) {
|
||||||
ExecTaskItem execTaskItem = apiCommonService.newExecTaskItem(execTask.getId(), project.getId(), userId);
|
ExecTaskItem execTaskItem = apiCommonService.newExecTaskItem(execTask.getId(), project.getId(), userId);
|
||||||
|
@ -282,6 +282,7 @@ public class TestPlanApiScenarioBatchRunService {
|
||||||
execTaskItem.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_SCENARIO.name());
|
execTaskItem.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_SCENARIO.name());
|
||||||
execTaskItem.setResourceId(testPlanApiScenario.getId());
|
execTaskItem.setResourceId(testPlanApiScenario.getId());
|
||||||
execTaskItem.setCaseId(testPlanApiScenario.getCaseId());
|
execTaskItem.setCaseId(testPlanApiScenario.getCaseId());
|
||||||
|
execTaskItem.setTaskOrigin(testPlanId);
|
||||||
execTaskItem.setResourceName(testPlanApiScenario.getName());
|
execTaskItem.setResourceName(testPlanApiScenario.getName());
|
||||||
execTaskItem.setCollectionId(testPlanApiScenario.getTestPlanCollectionId());
|
execTaskItem.setCollectionId(testPlanApiScenario.getTestPlanCollectionId());
|
||||||
execTaskItems.add(execTaskItem);
|
execTaskItems.add(execTaskItem);
|
||||||
|
|
Loading…
Reference in New Issue