feat(测试计划): 处理β版本计划的测试集数据及其关联用例的数据
This commit is contained in:
parent
c9dc268569
commit
f43f23ae7b
|
@ -18,6 +18,7 @@ import io.metersphere.plan.domain.TestPlanCollection;
|
|||
import io.metersphere.plan.domain.TestPlanCollectionExample;
|
||||
import io.metersphere.plan.dto.ApiCaseModuleDTO;
|
||||
import io.metersphere.plan.dto.TestPlanCaseRunResultCount;
|
||||
import io.metersphere.plan.dto.TestPlanCollectionDTO;
|
||||
import io.metersphere.plan.dto.TestPlanResourceAssociationParam;
|
||||
import io.metersphere.plan.dto.request.*;
|
||||
import io.metersphere.plan.dto.response.TestPlanApiCasePageResponse;
|
||||
|
@ -516,4 +517,17 @@ public class TestPlanApiCaseService extends TestPlanResourceService {
|
|||
testPlanApiCaseList.add(testPlanApiCase);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> defaultCollections) {
|
||||
TestPlanCollectionDTO defaultCollection = defaultCollections.stream().filter(collection -> StringUtils.equals(collection.getType(), CaseType.API_CASE.getKey())
|
||||
&& !StringUtils.equals(collection.getParentId(), "NONE")).toList().get(0);
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
TestPlanApiCaseMapper apiBatchMapper = sqlSession.getMapper(TestPlanApiCaseMapper.class);
|
||||
TestPlanApiCase record = new TestPlanApiCase();
|
||||
record.setTestPlanCollectionId(defaultCollection.getId());
|
||||
TestPlanApiCaseExample apiCaseExample = new TestPlanApiCaseExample();
|
||||
apiCaseExample.createCriteria().andTestPlanIdEqualTo(planId);
|
||||
apiBatchMapper.updateByExampleSelective(record, apiCaseExample);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,9 +4,11 @@ import io.metersphere.plan.constants.AssociateCaseType;
|
|||
import io.metersphere.plan.domain.TestPlanApiScenario;
|
||||
import io.metersphere.plan.domain.TestPlanApiScenarioExample;
|
||||
import io.metersphere.plan.dto.TestPlanCaseRunResultCount;
|
||||
import io.metersphere.plan.dto.TestPlanCollectionDTO;
|
||||
import io.metersphere.plan.dto.request.BaseCollectionAssociateRequest;
|
||||
import io.metersphere.plan.mapper.ExtTestPlanApiScenarioMapper;
|
||||
import io.metersphere.plan.mapper.TestPlanApiScenarioMapper;
|
||||
import io.metersphere.plan.mapper.TestPlanCollectionMapper;
|
||||
import io.metersphere.sdk.constants.CaseType;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.uid.IDGenerator;
|
||||
|
@ -34,6 +36,8 @@ public class TestPlanApiScenarioService extends TestPlanResourceService {
|
|||
private TestPlanApiScenarioMapper testPlanApiScenarioMapper;
|
||||
@Resource
|
||||
private ExtTestPlanApiScenarioMapper extTestPlanApiScenarioMapper;
|
||||
@Resource
|
||||
private TestPlanCollectionMapper testPlanCollectionMapper;
|
||||
|
||||
@Override
|
||||
public void deleteBatchByTestPlanId(List<String> testPlanIdList) {
|
||||
|
@ -102,4 +106,16 @@ public class TestPlanApiScenarioService extends TestPlanResourceService {
|
|||
// TODO: 调用具体的关联场景用例入库方法 入参{计划ID, 测试集ID, 关联的用例ID集合}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> defaultCollections) {
|
||||
TestPlanCollectionDTO defaultCollection = defaultCollections.stream().filter(collection -> StringUtils.equals(collection.getType(), CaseType.SCENARIO_CASE.getKey())
|
||||
&& !StringUtils.equals(collection.getParentId(), "NONE")).toList().get(0);
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
TestPlanApiScenarioMapper scenarioBatchMapper = sqlSession.getMapper(TestPlanApiScenarioMapper.class);
|
||||
TestPlanApiScenario record = new TestPlanApiScenario();
|
||||
record.setTestPlanCollectionId(defaultCollection.getId());
|
||||
TestPlanApiScenarioExample scenarioCaseExample = new TestPlanApiScenarioExample();
|
||||
scenarioCaseExample.createCriteria().andTestPlanIdEqualTo(planId);
|
||||
scenarioBatchMapper.updateByExampleSelective(record, scenarioCaseExample);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import io.metersphere.bug.domain.BugRelationCaseExample;
|
|||
import io.metersphere.bug.mapper.BugRelationCaseMapper;
|
||||
import io.metersphere.bug.service.BugCommonService;
|
||||
import io.metersphere.plan.dto.TestPlanBugCaseDTO;
|
||||
import io.metersphere.plan.dto.TestPlanCollectionDTO;
|
||||
import io.metersphere.plan.dto.request.BaseCollectionAssociateRequest;
|
||||
import io.metersphere.plan.dto.request.TestPlanBugPageRequest;
|
||||
import io.metersphere.plan.dto.response.TestPlanBugPageResponse;
|
||||
|
@ -121,4 +122,9 @@ public class TestPlanBugService extends TestPlanResourceService {
|
|||
public void associateCollection(String planId, Map<String, List<BaseCollectionAssociateRequest>> collectionAssociates,String userId) {
|
||||
// TODO: 暂不支持缺陷关联测试集
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> defaultCollections) {
|
||||
// 暂不支持缺陷关联测试集
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.metersphere.plan.constants.AssociateCaseType;
|
|||
import io.metersphere.plan.domain.*;
|
||||
import io.metersphere.plan.dto.ResourceLogInsertModule;
|
||||
import io.metersphere.plan.dto.TestPlanCaseRunResultCount;
|
||||
import io.metersphere.plan.dto.TestPlanCollectionDTO;
|
||||
import io.metersphere.plan.dto.TestPlanResourceAssociationParam;
|
||||
import io.metersphere.plan.dto.request.*;
|
||||
import io.metersphere.plan.dto.response.*;
|
||||
|
@ -108,11 +109,14 @@ public class TestPlanFunctionalCaseService extends TestPlanResourceService {
|
|||
private TestPlanSendNoticeService testPlanSendNoticeService;
|
||||
@Resource
|
||||
private BugStatusService bugStatusService;
|
||||
@Resource
|
||||
private TestPlanCollectionMapper testPlanCollectionMapper;
|
||||
|
||||
@Resource
|
||||
private ExtUserMapper extUserMapper;
|
||||
private static final String CASE_MODULE_COUNT_ALL = "all";
|
||||
|
||||
@Override
|
||||
public long copyResource(String originalTestPlanId, String newTestPlanId, String operator, long operatorTime) {
|
||||
List<TestPlanFunctionalCase> copyList = new ArrayList<>();
|
||||
extTestPlanFunctionalCaseMapper.selectByTestPlanIdAndNotDeleted(originalTestPlanId).forEach(originalCase -> {
|
||||
|
@ -688,4 +692,18 @@ public class TestPlanFunctionalCaseService extends TestPlanResourceService {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> defaultCollections) {
|
||||
TestPlanCollectionDTO defaultCollection = defaultCollections.stream().filter(collection -> StringUtils.equals(collection.getType(), CaseType.FUNCTIONAL_CASE.getKey())
|
||||
&& !StringUtils.equals(collection.getParentId(), "NONE")).toList().get(0);
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
TestPlanFunctionalCaseMapper functionalBatchMapper = sqlSession.getMapper(TestPlanFunctionalCaseMapper.class);
|
||||
TestPlanFunctionalCase record = new TestPlanFunctionalCase();
|
||||
record.setTestPlanCollectionId(defaultCollection.getId());
|
||||
TestPlanFunctionalCaseExample functionalCaseExample = new TestPlanFunctionalCaseExample();
|
||||
functionalCaseExample.createCriteria().andTestPlanIdEqualTo(planId);
|
||||
functionalBatchMapper.updateByExampleSelective(record, functionalCaseExample);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package io.metersphere.plan.service;
|
|||
|
||||
import io.metersphere.plan.domain.TestPlan;
|
||||
import io.metersphere.plan.dto.ResourceLogInsertModule;
|
||||
import io.metersphere.plan.dto.TestPlanCollectionDTO;
|
||||
import io.metersphere.plan.dto.TestPlanResourceAssociationParam;
|
||||
import io.metersphere.plan.dto.request.BaseCollectionAssociateRequest;
|
||||
import io.metersphere.plan.dto.request.BasePlanCaseBatchRequest;
|
||||
|
@ -62,4 +63,11 @@ public abstract class TestPlanResourceService extends TestPlanSortService {
|
|||
* @param collectionAssociates 测试集关联用例参数
|
||||
*/
|
||||
public abstract void associateCollection(String planId, Map<String, List<BaseCollectionAssociateRequest>> collectionAssociates, String userId);
|
||||
|
||||
/**
|
||||
* 初始化旧的关联资源到默认测试集
|
||||
* @param planId
|
||||
* @param defaultCollections 默认的测试集集合
|
||||
*/
|
||||
public abstract void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> defaultCollections);
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
|
|||
import org.mybatis.spring.SqlSessionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
@ -488,10 +489,35 @@ public class TestPlanService extends TestPlanBaseUtilsService {
|
|||
Boolean isFollow = checkIsFollowCase(id, userId);
|
||||
response.setFollowFlag(isFollow);
|
||||
|
||||
// 是否计划已初始化默认测试集
|
||||
TestPlanCollectionExample collectionExample = new TestPlanCollectionExample();
|
||||
collectionExample.createCriteria().andTestPlanIdEqualTo(id);
|
||||
if (testPlanCollectionMapper.countByExample(collectionExample) == 0) {
|
||||
List<TestPlanCollectionDTO> collections = initDefaultPlanCollection(id, userId);
|
||||
TestPlanService testPlanService = CommonBeanFactory.getBean(TestPlanService.class);
|
||||
testPlanService.initResourceDefaultCollection(id, collections);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联的资源初始化默认测试集
|
||||
* @param planId 计划ID
|
||||
* @param allCollections 测试集
|
||||
*/
|
||||
@Async
|
||||
public void initResourceDefaultCollection(String planId, List<TestPlanCollectionDTO> allCollections) {
|
||||
// 批处理旧数据
|
||||
List<TestPlanCollectionDTO> defaultCollections = new ArrayList<>();
|
||||
allCollections.forEach(allCollection -> {
|
||||
defaultCollections.addAll(allCollection.getChildren());
|
||||
});
|
||||
Map<String, TestPlanResourceService> beansOfType = applicationContext.getBeansOfType(TestPlanResourceService.class);
|
||||
beansOfType.forEach((k, v) -> v.initResourceDefaultCollection(planId, defaultCollections));
|
||||
}
|
||||
|
||||
|
||||
private Boolean checkIsFollowCase(String testPlanId, String userId) {
|
||||
TestPlanFollowerExample example = new TestPlanFollowerExample();
|
||||
example.createCriteria().andTestPlanIdEqualTo(testPlanId).andUserIdEqualTo(userId);
|
||||
|
@ -853,9 +879,7 @@ public class TestPlanService extends TestPlanBaseUtilsService {
|
|||
|
||||
collectionDTOS.add(parentCollectionDTO);
|
||||
}
|
||||
testPlanCollectionMapper.batchInsertSelective(collections, TestPlanCollection.Column.id, TestPlanCollection.Column.testPlanId,
|
||||
TestPlanCollection.Column.parentId, TestPlanCollection.Column.name, TestPlanCollection.Column.type, TestPlanCollection.Column.testResourcePoolId,
|
||||
TestPlanCollection.Column.createUser, TestPlanCollection.Column.createTime, TestPlanCollection.Column.pos);
|
||||
testPlanCollectionMapper.batchInsert(collections);
|
||||
|
||||
return collectionDTOS;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue