refactor(项目设置): 编辑项目开启场景自定义ID保存时反应慢
This commit is contained in:
parent
8fb591fdc9
commit
63f74454da
|
@ -21,4 +21,6 @@ public class ApiTestImportRequest {
|
||||||
private String userId;
|
private String userId;
|
||||||
//调用类型
|
//调用类型
|
||||||
private String type;
|
private String type;
|
||||||
|
// 是否开启自定义ID
|
||||||
|
private Boolean openCustomNum = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,12 +249,16 @@ public class ApiAutomationService {
|
||||||
public ApiScenario create(SaveApiScenarioRequest request, List<MultipartFile> bodyFiles, List<MultipartFile> scenarioFiles) {
|
public ApiScenario create(SaveApiScenarioRequest request, List<MultipartFile> bodyFiles, List<MultipartFile> scenarioFiles) {
|
||||||
request.setId(UUID.randomUUID().toString());
|
request.setId(UUID.randomUUID().toString());
|
||||||
checkNameExist(request);
|
checkNameExist(request);
|
||||||
|
int nextNum = getNextNum(request.getProjectId());
|
||||||
|
if (StringUtils.isBlank(request.getCustomNum())) {
|
||||||
|
request.setCustomNum(String.valueOf(nextNum));
|
||||||
|
}
|
||||||
checkScenarioNum(request);
|
checkScenarioNum(request);
|
||||||
final ApiScenarioWithBLOBs scenario = buildSaveScenario(request);
|
final ApiScenarioWithBLOBs scenario = buildSaveScenario(request);
|
||||||
scenario.setVersion(0);
|
scenario.setVersion(0);
|
||||||
|
|
||||||
scenario.setCreateTime(System.currentTimeMillis());
|
scenario.setCreateTime(System.currentTimeMillis());
|
||||||
scenario.setNum(getNextNum(request.getProjectId()));
|
scenario.setNum(nextNum);
|
||||||
List<ApiMethodUrlDTO> useUrl = this.parseUrl(scenario);
|
List<ApiMethodUrlDTO> useUrl = this.parseUrl(scenario);
|
||||||
scenario.setUseUrl(JSONArray.toJSONString(useUrl));
|
scenario.setUseUrl(JSONArray.toJSONString(useUrl));
|
||||||
|
|
||||||
|
@ -287,20 +291,16 @@ public class ApiAutomationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkScenarioNum(SaveApiScenarioRequest request) {
|
private void checkScenarioNum(SaveApiScenarioRequest request) {
|
||||||
if (StringUtils.isNotBlank(request.getCustomNum())) {
|
String projectId = request.getProjectId();
|
||||||
String projectId = request.getProjectId();
|
Project project = projectMapper.selectByPrimaryKey(projectId);
|
||||||
Project project = projectMapper.selectByPrimaryKey(projectId);
|
|
||||||
if (project != null) {
|
if (project == null) {
|
||||||
Boolean customNum = project.getScenarioCustomNum();
|
MSException.throwException("add scenario fail, project is not find.");
|
||||||
// 未开启自定义ID
|
}
|
||||||
if (!customNum) {
|
|
||||||
request.setCustomNum(null);
|
Boolean openCustomNum = project.getScenarioCustomNum();
|
||||||
} else {
|
if (BooleanUtils.isTrue(openCustomNum)) {
|
||||||
checkCustomNumExist(request);
|
checkCustomNumExist(request);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
MSException.throwException("add scenario fail, project is not find.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,7 +312,7 @@ public class ApiAutomationService {
|
||||||
.andIdNotEqualTo(request.getId());
|
.andIdNotEqualTo(request.getId());
|
||||||
List<ApiScenario> list = apiScenarioMapper.selectByExample(example);
|
List<ApiScenario> list = apiScenarioMapper.selectByExample(example);
|
||||||
if (CollectionUtils.isNotEmpty(list)) {
|
if (CollectionUtils.isNotEmpty(list)) {
|
||||||
MSException.throwException("自定义ID已存在!");
|
MSException.throwException("自定义ID "+ request.getCustomNum() +" 已存在!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1671,6 +1671,34 @@ public class ApiAutomationService {
|
||||||
scenarioWithBLOBs.setDescription(request.getDescription());
|
scenarioWithBLOBs.setDescription(request.getDescription());
|
||||||
|
|
||||||
List<ApiScenarioWithBLOBs> sameRequest = getWithBLOBs(scenarioWithBLOBs);
|
List<ApiScenarioWithBLOBs> sameRequest = getWithBLOBs(scenarioWithBLOBs);
|
||||||
|
|
||||||
|
Boolean openCustomNum = apiTestImportRequest.getOpenCustomNum();
|
||||||
|
List<ApiScenario> list = new ArrayList<>();
|
||||||
|
if (BooleanUtils.isTrue(openCustomNum)) {
|
||||||
|
ApiScenarioExample example = new ApiScenarioExample();
|
||||||
|
ApiScenarioExample.Criteria criteria = example.createCriteria();
|
||||||
|
if (CollectionUtils.isEmpty(sameRequest)) {
|
||||||
|
criteria.andCustomNumEqualTo(scenarioWithBLOBs.getCustomNum())
|
||||||
|
.andProjectIdEqualTo(scenarioWithBLOBs.getProjectId());
|
||||||
|
} else {
|
||||||
|
if (StringUtils.equals("fullCoverage", apiTestImportRequest.getModeId())) {
|
||||||
|
criteria.andNameEqualTo(scenarioWithBLOBs.getName())
|
||||||
|
.andCustomNumEqualTo(scenarioWithBLOBs.getCustomNum())
|
||||||
|
.andProjectIdEqualTo(scenarioWithBLOBs.getProjectId())
|
||||||
|
.andIdNotEqualTo(sameRequest.get(0).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (criteria.isValid()) {
|
||||||
|
list = apiScenarioMapper.selectByExample(example);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(list)) {
|
||||||
|
LogUtil.error("import scenario fail, custom num is exist: " + scenarioWithBLOBs.getCustomNum());
|
||||||
|
return scenarioWithBLOBs;
|
||||||
|
}
|
||||||
|
|
||||||
if (StringUtils.equals("fullCoverage", apiTestImportRequest.getModeId())) {
|
if (StringUtils.equals("fullCoverage", apiTestImportRequest.getModeId())) {
|
||||||
_importCreate(sameRequest, batchMapper, scenarioWithBLOBs, apiTestImportRequest);
|
_importCreate(sameRequest, batchMapper, scenarioWithBLOBs, apiTestImportRequest);
|
||||||
} else if (StringUtils.equals("incrementalMerge", apiTestImportRequest.getModeId())) {
|
} else if (StringUtils.equals("incrementalMerge", apiTestImportRequest.getModeId())) {
|
||||||
|
@ -1695,16 +1723,23 @@ public class ApiAutomationService {
|
||||||
if (!CollectionUtils.isEmpty(data) && data.get(0) != null && data.get(0).getProjectId() != null) {
|
if (!CollectionUtils.isEmpty(data) && data.get(0) != null && data.get(0).getProjectId() != null) {
|
||||||
num = getNextNum(data.get(0).getProjectId());
|
num = getNextNum(data.get(0).getProjectId());
|
||||||
project = projectMapper.selectByPrimaryKey(data.get(0).getProjectId());
|
project = projectMapper.selectByPrimaryKey(data.get(0).getProjectId());
|
||||||
|
request.setOpenCustomNum(project.getScenarioCustomNum());
|
||||||
}
|
}
|
||||||
for (int i = 0; i < data.size(); i++) {
|
for (int i = 0; i < data.size(); i++) {
|
||||||
ApiScenarioWithBLOBs item = data.get(i);
|
ApiScenarioWithBLOBs item = data.get(i);
|
||||||
if (item.getName().length() > 255) {
|
if (item.getName().length() > 255) {
|
||||||
item.setName(item.getName().substring(0, 255));
|
item.setName(item.getName().substring(0, 255));
|
||||||
}
|
}
|
||||||
item.setNum(num++);
|
item.setNum(num);
|
||||||
if (BooleanUtils.isTrue(project.getScenarioCustomNum()) && StringUtils.isBlank(item.getCustomNum())) {
|
if (BooleanUtils.isFalse(project.getScenarioCustomNum())) {
|
||||||
|
// 如果未开启,即使有自定值也直接覆盖
|
||||||
item.setCustomNum(String.valueOf(num));
|
item.setCustomNum(String.valueOf(num));
|
||||||
|
} else {
|
||||||
|
if (StringUtils.isBlank(item.getCustomNum())) {
|
||||||
|
item.setCustomNum(String.valueOf(num));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
num++;
|
||||||
importCreate(item, batchMapper, request);
|
importCreate(item, batchMapper, request);
|
||||||
if (i % 300 == 0) {
|
if (i % 300 == 0) {
|
||||||
sqlSession.flushStatements();
|
sqlSession.flushStatements();
|
||||||
|
|
|
@ -239,9 +239,6 @@ public class ProjectService {
|
||||||
if (BooleanUtils.isTrue(project.getCustomNum())) {
|
if (BooleanUtils.isTrue(project.getCustomNum())) {
|
||||||
testCaseService.updateTestCaseCustomNumByProjectId(project.getId());
|
testCaseService.updateTestCaseCustomNumByProjectId(project.getId());
|
||||||
}
|
}
|
||||||
if (BooleanUtils.isTrue(project.getScenarioCustomNum())) {
|
|
||||||
apiAutomationService.updateCustomNumByProjectId(project.getId());
|
|
||||||
}
|
|
||||||
projectMapper.updateByPrimaryKeySelective(project);
|
projectMapper.updateByPrimaryKeySelective(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
update api_scenario set custom_num = num where (custom_num is null or custom_num = '');
|
|
@ -134,7 +134,7 @@
|
||||||
formData: {
|
formData: {
|
||||||
file: undefined,
|
file: undefined,
|
||||||
swaggerUrl: '',
|
swaggerUrl: '',
|
||||||
modeId: this.$t('commons.not_cover'),
|
modeId: 'incrementalMerge',
|
||||||
moduleId: '',
|
moduleId: '',
|
||||||
},
|
},
|
||||||
rules: {},
|
rules: {},
|
||||||
|
|
Loading…
Reference in New Issue