mirror of
https://gitee.com/fit2cloud-feizhiyun/MeterSphere.git
synced 2024-12-05 05:29:29 +08:00
fix(测试跟踪): 测试计划状态更新为已结束不及时
--bug=1025804 --user=陈建星 【测试跟踪】测试计划-计划结束时间到期后,测试计划状态未更新为已结束 https://www.tapd.cn/55049933/s/1369036
This commit is contained in:
parent
ab50325678
commit
f7e8e33148
@ -68,6 +68,7 @@ import org.mybatis.spring.SqlSessionUtils;
|
|||||||
import org.quartz.*;
|
import org.quartz.*;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.kafka.core.KafkaTemplate;
|
import org.springframework.kafka.core.KafkaTemplate;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -155,6 +156,9 @@ public class TestPlanService {
|
|||||||
private ApiPoolDebugService apiPoolDebugService;
|
private ApiPoolDebugService apiPoolDebugService;
|
||||||
@Resource
|
@Resource
|
||||||
private TestPlanExecuteService testPlanExecuteService;
|
private TestPlanExecuteService testPlanExecuteService;
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private TestPlanService testPlanService;
|
||||||
|
|
||||||
public TestPlan addTestPlan(AddTestPlanRequest testPlan) {
|
public TestPlan addTestPlan(AddTestPlanRequest testPlan) {
|
||||||
if (getTestPlanByName(testPlan.getName()).size() > 0) {
|
if (getTestPlanByName(testPlan.getName()).size() > 0) {
|
||||||
@ -482,6 +486,7 @@ public class TestPlanService {
|
|||||||
}
|
}
|
||||||
List<TestPlanDTOWithMetric> testPlanList = extTestPlanMapper.list(request);
|
List<TestPlanDTOWithMetric> testPlanList = extTestPlanMapper.list(request);
|
||||||
if (CollectionUtils.isNotEmpty(testPlanList)) {
|
if (CollectionUtils.isNotEmpty(testPlanList)) {
|
||||||
|
List<String> changeToFinishedIds = new ArrayList<>();
|
||||||
//检查定时任务的设置
|
//检查定时任务的设置
|
||||||
List<String> idList = testPlanList.stream().map(TestPlan::getId).collect(Collectors.toList());
|
List<String> idList = testPlanList.stream().map(TestPlan::getId).collect(Collectors.toList());
|
||||||
List<Schedule> scheduleByResourceIds = baseScheduleService.getScheduleByResourceIds(idList, ScheduleGroup.TEST_PLAN_TEST.name());
|
List<Schedule> scheduleByResourceIds = baseScheduleService.getScheduleByResourceIds(idList, ScheduleGroup.TEST_PLAN_TEST.name());
|
||||||
@ -500,14 +505,44 @@ public class TestPlanService {
|
|||||||
item.setScheduleStatus(ScheduleStatus.NOTSET.name());
|
item.setScheduleStatus(ScheduleStatus.NOTSET.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
//关注人这里查出来。 是因为编辑的时候需要有这个字段。
|
// 关注人这里查出来。 是因为编辑的时候需要有这个字段。
|
||||||
List<User> planPrincipal = this.getPlanPrincipal(item.getId());
|
List<User> planPrincipal = this.getPlanPrincipal(item.getId());
|
||||||
item.setPrincipalUsers(planPrincipal);
|
item.setPrincipalUsers(planPrincipal);
|
||||||
|
|
||||||
|
// 还没有结束的计划,如果设置了结束时间,并且已经到了结束时间,则将状态改为已结束
|
||||||
|
if (!StringUtils.equals(item.getStatus(), TestPlanStatus.Finished.name())
|
||||||
|
&& item.getPlannedEndTime() != null && System.currentTimeMillis() > item.getPlannedEndTime()) {
|
||||||
|
item.setStatus(TestPlanStatus.Finished.name());
|
||||||
|
changeToFinishedIds.add(item.getId());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(changeToFinishedIds)) {
|
||||||
|
// 使用代理对象,避免 @Async 失效
|
||||||
|
testPlanService.changeToFinished(changeToFinishedIds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return testPlanList;
|
return testPlanList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步将测试计划的状态置为已结束
|
||||||
|
* @param changeToFinishedIds
|
||||||
|
*/
|
||||||
|
@Async
|
||||||
|
protected void changeToFinished(List<String> changeToFinishedIds) {
|
||||||
|
if (CollectionUtils.isEmpty(changeToFinishedIds)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TestPlanExample example = new TestPlanExample();
|
||||||
|
example.createCriteria().andIdIn(changeToFinishedIds);
|
||||||
|
List<TestPlanWithBLOBs> testPlans = testPlanMapper.selectByExampleWithBLOBs(example);
|
||||||
|
testPlans.forEach(item -> {
|
||||||
|
item.setStatus(TestPlanStatus.Finished.name());
|
||||||
|
editTestPlan(item);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public List<TestPlanDTOWithMetric> selectTestPlanMetricById(List<String> idList) {
|
public List<TestPlanDTOWithMetric> selectTestPlanMetricById(List<String> idList) {
|
||||||
List<TestPlanDTOWithMetric> testPlanMetricList = this.calcTestPlanRateByIdList(idList);
|
List<TestPlanDTOWithMetric> testPlanMetricList = this.calcTestPlanRateByIdList(idList);
|
||||||
Map<String, ParamsDTO> planTestCaseCountMap = extTestPlanMapper.testPlanTestCaseCount(idList);
|
Map<String, ParamsDTO> planTestCaseCountMap = extTestPlanMapper.testPlanTestCaseCount(idList);
|
||||||
|
Loading…
Reference in New Issue
Block a user