fix: 测试计划用例缺陷数显示错误
This commit is contained in:
parent
6cf8f3faff
commit
ab1cc426f5
|
@ -1,17 +1,12 @@
|
|||
package io.metersphere.job.sechedule;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.fit2cloud.quartz.anno.QuartzScheduled;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.metersphere.base.domain.IssuesDao;
|
||||
import io.metersphere.base.domain.TestPlanTestCase;
|
||||
import io.metersphere.base.domain.TestPlanTestCaseWithBLOBs;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.track.service.IssuesService;
|
||||
import io.metersphere.track.service.TestCaseIssueService;
|
||||
import io.metersphere.track.service.TestPlanTestCaseService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -19,10 +14,10 @@ import java.util.List;
|
|||
|
||||
@Component
|
||||
public class IssuesJob {
|
||||
@Resource
|
||||
private IssuesService issuesService;
|
||||
@Resource
|
||||
private TestPlanTestCaseService testPlanTestCaseService;
|
||||
@Resource
|
||||
private TestCaseIssueService testCaseIssueService;
|
||||
|
||||
//@QuartzScheduled(fixedDelay = 3600 * 1000)
|
||||
// @Scheduled(fixedDelay = 120 * 1000)
|
||||
|
@ -35,16 +30,7 @@ public class IssuesJob {
|
|||
List<TestPlanTestCaseWithBLOBs> list = testPlanTestCaseService.listAll();
|
||||
pages = page.getPages();// 替换成真实的值
|
||||
list.forEach(l -> {
|
||||
try {
|
||||
List<IssuesDao> issues = issuesService.getIssues(l.getCaseId());
|
||||
if (CollectionUtils.isEmpty(issues)) {
|
||||
return;
|
||||
}
|
||||
int issuesCount = issues.size();
|
||||
testPlanTestCaseService.updateIssues(issuesCount, l.getPlanId(), l.getCaseId(), JSON.toJSONString(issues));
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("定时任务处理bug数量报错planId: {}, message: {}", l.getPlanId(), ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
testCaseIssueService.updateIssuesCount(l.getCaseId());
|
||||
});
|
||||
}
|
||||
LogUtil.info("测试计划-测试用例同步缺陷信息结束");
|
||||
|
|
|
@ -219,13 +219,23 @@ public class PerformanceTestService {
|
|||
}
|
||||
}
|
||||
|
||||
private LoadTestWithBLOBs saveLoadTest(SaveTestPlanRequest request) {
|
||||
|
||||
LoadTestExample example = new LoadTestExample();
|
||||
example.createCriteria().andNameEqualTo(request.getName()).andProjectIdEqualTo(request.getProjectId());
|
||||
if (loadTestMapper.countByExample(example) > 0) {
|
||||
MSException.throwException(Translator.get("load_test_already_exists"));
|
||||
private void checkExist(TestPlanRequest request) {
|
||||
if (request.getName() != null) {
|
||||
LoadTestExample example = new LoadTestExample();
|
||||
LoadTestExample.Criteria criteria = example.createCriteria();
|
||||
criteria.andNameEqualTo(request.getName())
|
||||
.andProjectIdEqualTo(request.getProjectId());
|
||||
if (StringUtils.isNotBlank(request.getId())) {
|
||||
criteria.andIdNotEqualTo(request.getId());
|
||||
}
|
||||
if (loadTestMapper.selectByExample(example).size() > 0) {
|
||||
MSException.throwException(Translator.get("plan_name_already_exists"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private LoadTestWithBLOBs saveLoadTest(SaveTestPlanRequest request) {
|
||||
checkExist(request);
|
||||
|
||||
final LoadTestWithBLOBs loadTest = new LoadTestWithBLOBs();
|
||||
loadTest.setUserId(SessionUtils.getUser().getId());
|
||||
|
@ -250,7 +260,7 @@ public class PerformanceTestService {
|
|||
|
||||
public LoadTest edit(EditTestPlanRequest request, List<MultipartFile> files) {
|
||||
checkQuota(request, false);
|
||||
//
|
||||
checkExist(request);
|
||||
String testId = request.getId();
|
||||
LoadTestWithBLOBs loadTest = loadTestMapper.selectByPrimaryKey(testId);
|
||||
if (loadTest == null) {
|
||||
|
|
|
@ -1,16 +1,10 @@
|
|||
package io.metersphere.track.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import io.metersphere.base.domain.IssuesDao;
|
||||
import io.metersphere.base.mapper.ext.ExtTestPlanTestCaseMapper;
|
||||
import io.metersphere.commons.constants.OperLogConstants;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.log.annotation.MsAuditLog;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
import io.metersphere.track.request.issues.IssuesRelevanceRequest;
|
||||
import io.metersphere.track.service.IssuesService;
|
||||
import io.metersphere.track.service.TestCaseIssueService;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
@ -25,10 +19,6 @@ public class TestCaseIssuesController {
|
|||
|
||||
@Resource
|
||||
private TestCaseIssueService testCaseIssueService;
|
||||
@Resource
|
||||
private IssuesService issuesService;
|
||||
@Resource
|
||||
private ExtTestPlanTestCaseMapper extTestPlanTestCaseMapper;
|
||||
|
||||
@PostMapping("/list")
|
||||
public List<TestCaseDTO> list(@RequestBody IssuesRelevanceRequest request) {
|
||||
|
@ -39,19 +29,5 @@ public class TestCaseIssuesController {
|
|||
@MsAuditLog(module = "track_test_case", type = OperLogConstants.ASSOCIATE_ISSUE, content = "#msClass.getLogDetails(#request)", msClass = TestCaseIssueService.class)
|
||||
public void relate(@RequestBody IssuesRelevanceRequest request) {
|
||||
testCaseIssueService.relate(request);
|
||||
try {
|
||||
List<IssuesDao> issues = issuesService.getIssues(request.getCaseId());
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(issues)) {
|
||||
LogUtil.error(request.getCaseId() + "下的缺陷为空");
|
||||
}
|
||||
int issuesCount = issues.size();
|
||||
this.updateIssues(issuesCount, "", request.getCaseId(), JSON.toJSONString(issues));
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("处理bug数量报错caseId: {}, message: {}", request.getCaseId(), ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
}
|
||||
|
||||
public void updateIssues(int issuesCount, String id, String caseId, String issues) {
|
||||
extTestPlanTestCaseMapper.update(issuesCount, id, caseId, issues);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.metersphere.service.ResourceService;
|
|||
import io.metersphere.service.UserService;
|
||||
import io.metersphere.track.request.testcase.IssuesRequest;
|
||||
import io.metersphere.track.request.testcase.IssuesUpdateRequest;
|
||||
import io.metersphere.track.service.TestCaseIssueService;
|
||||
import io.metersphere.track.service.TestCaseService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||
|
@ -44,12 +45,14 @@ import java.util.Optional;
|
|||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public abstract class AbstractIssuePlatform implements IssuesPlatform {
|
||||
|
||||
private static RestTemplate restTemplate;
|
||||
|
||||
protected IntegrationService integrationService;
|
||||
protected TestCaseIssueService testCaseIssueService;
|
||||
protected TestCaseIssuesMapper testCaseIssuesMapper;
|
||||
protected ProjectService projectService;
|
||||
protected TestCaseService testCaseService;
|
||||
|
@ -107,6 +110,7 @@ public abstract class AbstractIssuePlatform implements IssuesPlatform {
|
|||
this.issuesMapper = CommonBeanFactory.getBean(IssuesMapper.class);
|
||||
this.extIssuesMapper = CommonBeanFactory.getBean(ExtIssuesMapper.class);
|
||||
this.resourceService = CommonBeanFactory.getBean(ResourceService.class);
|
||||
this.testCaseIssueService = CommonBeanFactory.getBean(TestCaseIssueService.class);
|
||||
this.restTemplateIgnoreSSL = restTemplate;
|
||||
}
|
||||
|
||||
|
@ -151,6 +155,7 @@ public abstract class AbstractIssuePlatform implements IssuesPlatform {
|
|||
testCaseIssues.setIssuesId(issuesId);
|
||||
testCaseIssues.setTestCaseId(caseId);
|
||||
testCaseIssuesMapper.insert(testCaseIssues);
|
||||
testCaseIssueService.updateIssuesCount(caseId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -164,17 +169,23 @@ public abstract class AbstractIssuePlatform implements IssuesPlatform {
|
|||
String issuesId = issuesRequest.getId();
|
||||
if (StringUtils.isNotBlank(issuesRequest.getTestCaseId())) {
|
||||
insertTestCaseIssues(issuesId, issuesRequest.getTestCaseId());
|
||||
} else {
|
||||
} else {
|
||||
List<String> testCaseIds = issuesRequest.getTestCaseIds();
|
||||
TestCaseIssuesExample example = new TestCaseIssuesExample();
|
||||
example.createCriteria().andIssuesIdEqualTo(issuesId);
|
||||
testCaseIssuesMapper.deleteByExample(example);
|
||||
List<TestCaseIssues> testCaseIssues = testCaseIssuesMapper.selectByExample(example);
|
||||
List<String> deleteCaseIds = testCaseIssues.stream().map(TestCaseIssues::getTestCaseId).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(testCaseIds)) {
|
||||
deleteCaseIds.removeAll(testCaseIds);
|
||||
}
|
||||
testCaseIssuesMapper.deleteByExample(example);
|
||||
deleteCaseIds.forEach(testCaseIssueService::updateIssuesCount);
|
||||
if (!CollectionUtils.isEmpty(testCaseIds)) {
|
||||
testCaseIds.forEach(caseId -> {
|
||||
insertTestCaseIssues(issuesId, caseId);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void insertIssuesWithoutContext(String id, IssuesUpdateRequest issuesRequest) {
|
||||
|
|
|
@ -22,7 +22,6 @@ import io.metersphere.notice.service.NoticeSendService;
|
|||
import io.metersphere.service.IntegrationService;
|
||||
import io.metersphere.service.IssueTemplateService;
|
||||
import io.metersphere.service.ProjectService;
|
||||
import io.metersphere.service.SystemParameterService;
|
||||
import io.metersphere.track.dto.PlanReportIssueDTO;
|
||||
import io.metersphere.track.dto.TestCaseReportStatusResultDTO;
|
||||
import io.metersphere.track.dto.TestPlanFunctionResultReportDTO;
|
||||
|
@ -36,7 +35,6 @@ import io.metersphere.track.request.testcase.IssuesUpdateRequest;
|
|||
import io.metersphere.track.request.testcase.TestCaseBatchRequest;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -77,7 +75,7 @@ public class IssuesService {
|
|||
@Resource
|
||||
private TestCaseMapper testCaseMapper;
|
||||
@Resource
|
||||
private SystemParameterService systemParameterService;
|
||||
private TestCaseIssueService testCaseIssueService;
|
||||
@Resource
|
||||
private TestPlanTestCaseService testPlanTestCaseService;
|
||||
|
||||
|
@ -95,16 +93,7 @@ public class IssuesService {
|
|||
platform.addIssue(issuesRequest);
|
||||
});
|
||||
issuesRequest.getTestCaseIds().forEach(l -> {
|
||||
try {
|
||||
List<IssuesDao> issues = this.getIssues(l);
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(issues)) {
|
||||
LogUtil.error(l + "下的缺陷为空");
|
||||
}
|
||||
int issuesCount = issues.size();
|
||||
testPlanTestCaseService.updateIssues(issuesCount, "", l, JSON.toJSONString(issues));
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("处理bug数量报错caseId: {}, message: {}", l, ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
testCaseIssueService.updateIssuesCount(l);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -153,10 +142,10 @@ public class IssuesService {
|
|||
String userId = testCase.getMaintainer();
|
||||
issueRequest.setOrganizationId(orgId);
|
||||
issueRequest.setUserId(userId);
|
||||
return getIssuesByProject(issueRequest, project);
|
||||
return getIssuesByProjectIdOrCaseId(issueRequest);
|
||||
}
|
||||
|
||||
public List<IssuesDao> getIssuesByProject(IssuesRequest issueRequest, Project project) {
|
||||
public List<IssuesDao> getIssuesByProjectIdOrCaseId(IssuesRequest issueRequest) {
|
||||
List<IssuesDao> issues;
|
||||
if (StringUtils.isNotBlank(issueRequest.getProjectId())) {
|
||||
issues = extIssuesMapper.getIssues(issueRequest);
|
||||
|
@ -291,6 +280,7 @@ public class IssuesService {
|
|||
TestCaseIssuesExample example = new TestCaseIssuesExample();
|
||||
example.createCriteria().andTestCaseIdEqualTo(caseId).andIssuesIdEqualTo(id);
|
||||
testCaseIssuesMapper.deleteByExample(example);
|
||||
testCaseIssueService.updateIssuesCount(caseId);
|
||||
}
|
||||
|
||||
public void delete(String id) {
|
||||
|
@ -404,16 +394,7 @@ public class IssuesService {
|
|||
List<TestPlanTestCaseWithBLOBs> list = testPlanTestCaseService.listAll();
|
||||
pages = page.getPages();// 替换成真实的值
|
||||
list.forEach(l -> {
|
||||
try {
|
||||
List<IssuesDao> issues = this.getIssues(l.getCaseId());
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(issues)) {
|
||||
return;
|
||||
}
|
||||
int issuesCount = issues.size();
|
||||
testPlanTestCaseService.updateIssues(issuesCount, l.getPlanId(), l.getCaseId(), JSON.toJSONString(issues));
|
||||
} catch (Exception e) {
|
||||
LogUtil.error("定时任务处理bug数量报错planId: {}, message: {}", l.getPlanId(), ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
testCaseIssueService.updateIssuesCount(l.getCaseId());
|
||||
});
|
||||
}
|
||||
LogUtil.info("测试计划-测试用例同步缺陷信息结束");
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package io.metersphere.track.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.metersphere.base.domain.*;
|
||||
import io.metersphere.base.mapper.IssuesMapper;
|
||||
import io.metersphere.base.mapper.TestCaseIssuesMapper;
|
||||
import io.metersphere.base.mapper.TestPlanTestCaseMapper;
|
||||
import io.metersphere.log.vo.OperatingLogDetails;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
import io.metersphere.track.request.issues.IssuesRelevanceRequest;
|
||||
|
@ -30,6 +32,11 @@ public class TestCaseIssueService {
|
|||
private TestCaseService testCaseService;
|
||||
@Resource
|
||||
private IssuesMapper issuesMapper;
|
||||
@Resource
|
||||
@Lazy
|
||||
private IssuesService issuesService;
|
||||
@Resource
|
||||
private TestPlanTestCaseMapper testPlanTestCaseMapper;
|
||||
|
||||
|
||||
public void delTestCaseIssues(String testCaseId) {
|
||||
|
@ -80,6 +87,21 @@ public class TestCaseIssueService {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
updateIssuesCount(request.getCaseId());
|
||||
}
|
||||
|
||||
public void updateIssuesCount(String caseId) {
|
||||
List<IssuesDao> issues = issuesService.getIssues(caseId);
|
||||
int issuesCount = issues.size();
|
||||
TestPlanTestCaseExample example = new TestPlanTestCaseExample();
|
||||
example.createCriteria().andCaseIdEqualTo(caseId);
|
||||
TestPlanTestCaseWithBLOBs testPlanTestCase = new TestPlanTestCaseWithBLOBs();
|
||||
testPlanTestCase.setIssuesCount(issuesCount);
|
||||
if (!CollectionUtils.isEmpty(issues)) {
|
||||
testPlanTestCase.setIssues(JSONObject.toJSONString(issues));
|
||||
}
|
||||
testPlanTestCaseMapper.updateByExampleSelective(testPlanTestCase, example);
|
||||
}
|
||||
|
||||
public void create(String caseId, String issueId) {
|
||||
|
|
|
@ -71,7 +71,7 @@ public class TestPlanTestCaseService {
|
|||
}
|
||||
|
||||
public void updateIssues(int issuesCount, String id, String caseId, String issues) {
|
||||
extTestPlanTestCaseMapper.update(issuesCount, id, caseId, issues);
|
||||
extTestPlanTestCaseMapper.update(issuesCount, id, caseId, issues);//to
|
||||
}
|
||||
|
||||
public List<TestPlanCaseDTO> list(QueryTestPlanCaseRequest request) {
|
||||
|
|
Loading…
Reference in New Issue