refactor: 优化删除场景报告效率

--bug=1012162 --user=陈建星 【UI测试】删除UI报告用时40多秒 https://www.tapd.cn/55049933/s/1135495
This commit is contained in:
chenjianxing 2022-04-15 14:19:48 +08:00 committed by 刘瑞斌
parent 475e935fd5
commit 3c8abbdc58
4 changed files with 33 additions and 20 deletions

View File

@ -31,4 +31,6 @@ public class DeleteAPIReportRequest {
private List<String> moduleIds;
private List<String> unSelectIds;
private Boolean isUi;
}

View File

@ -30,6 +30,7 @@ import io.metersphere.track.dto.PlanReportCaseDTO;
import io.metersphere.utils.LoggerUtil;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -549,13 +550,15 @@ public class ApiScenarioReportService {
structureExample.createCriteria().andReportIdEqualTo(request.getId());
apiScenarioReportStructureMapper.deleteByExample(structureExample);
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdEqualTo(request.getId());
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
if (BooleanUtils.isNotTrue(request.getIsUi())) {
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdEqualTo(request.getId());
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdEqualTo(request.getId());
definitionExecResultMapper.deleteByExample(execResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdEqualTo(request.getId());
definitionExecResultMapper.deleteByExample(execResultExample);
}
// 补充逻辑如果是集成报告则把零时报告全部删除
ApiScenarioReport report = apiScenarioReportMapper.selectByPrimaryKey(request.getId());
@ -563,6 +566,7 @@ public class ApiScenarioReportService {
List<String> list = getReportIds(report.getScenarioId());
if (CollectionUtils.isNotEmpty(list)) {
APIReportBatchRequest reportRequest = new APIReportBatchRequest();
reportRequest.setIsUi(request.getIsUi());
reportRequest.setIds(list);
this.deleteAPIReportBatch(reportRequest);
}
@ -669,13 +673,15 @@ public class ApiScenarioReportService {
structureExample.createCriteria().andReportIdIn(handleIdList);
apiScenarioReportStructureMapper.deleteByExample(structureExample);
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdIn(handleIdList);
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
if (BooleanUtils.isNotTrue(reportRequest.getIsUi())) {
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdIn(handleIdList);
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdIn(handleIdList);
definitionExecResultMapper.deleteByExample(execResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdIn(handleIdList);
definitionExecResultMapper.deleteByExample(execResultExample);
}
//转存剩余的数据
ids = otherIdList;
@ -698,13 +704,15 @@ public class ApiScenarioReportService {
structureExample.createCriteria().andReportIdIn(ids);
apiScenarioReportStructureMapper.deleteByExample(structureExample);
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdIn(ids);
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
if (BooleanUtils.isNotTrue(reportRequest.getIsUi())) {
ApiDefinitionExecResultExample definitionExecResultExample = new ApiDefinitionExecResultExample();
definitionExecResultExample.createCriteria().andIdIn(ids);
definitionExecResultMapper.deleteByExample(definitionExecResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdIn(ids);
definitionExecResultMapper.deleteByExample(execResultExample);
ApiDefinitionExecResultExample execResultExample = new ApiDefinitionExecResultExample();
execResultExample.createCriteria().andIntegratedReportIdIn(ids);
definitionExecResultMapper.deleteByExample(execResultExample);
}
}
}

View File

@ -230,4 +230,7 @@ INSERT INTO user_group_permission (id, group_id, permission_id, module_id)
VALUES (UUID(), 'ws_admin', 'WORKSPACE_QUOTA:READ+EDIT', 'WORKSPACE_QUOTA');
-- 删除场景冗余字段
ALTER TABLE api_scenario DROP COLUMN use_url;
ALTER TABLE api_scenario DROP COLUMN use_url;
-- 优化删除报告效率
CREATE INDEX api_definition_exec_result_integrated_report_id_IDX USING BTREE ON api_definition_exec_result (integrated_report_id);

View File

@ -324,7 +324,7 @@ export default {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {
this.result = this.$post("/api/scenario/report/delete", {id: report.id}, () => {
this.result = this.$post("/api/scenario/report/delete", {id: report.id, isUi: this.isUI}, () => {
this.$success(this.$t('commons.delete_success'));
this.search();
});