fix(任务中心): 优化任务中心执行中的任务检查,当无进行中的任务后停止检查
This commit is contained in:
parent
8f6969bffe
commit
ac6b92019c
|
@ -11,6 +11,6 @@ public interface ExtTaskMapper {
|
|||
void deleteByResourceId(String id);
|
||||
List<TaskCenterDTO> getTasks (@Param("request") TaskCenterRequest request);
|
||||
|
||||
List<TaskCenterDTO> getRunningTasks (@Param("request") TaskCenterRequest request);
|
||||
int getRunningTasks (@Param("request") TaskCenterRequest request);
|
||||
|
||||
}
|
|
@ -52,8 +52,8 @@
|
|||
</select>
|
||||
|
||||
|
||||
<select id="getRunningTasks" resultType="io.metersphere.task.dto.TaskCenterDTO" parameterType="java.lang.String">
|
||||
SELECT tt.* FROM (
|
||||
<select id="getRunningTasks" resultType="java.lang.Integer" parameterType="java.lang.String">
|
||||
SELECT count(tt.id) FROM (
|
||||
(select t.id,t.create_time as executionTime
|
||||
from api_scenario_report t left join `user` t1 ON t.user_id = t1.id left join test_resource_pool t2 on t.actuator = t2.id
|
||||
where to_days(FROM_UNIXTIME(t.create_time/1000))= to_days(now()) and t.execute_type !='Debug' and t.execute_type !='Marge' and t.project_id= #{request.projectId} and t.status not in ("saved","completed","success","error")
|
||||
|
|
|
@ -27,7 +27,7 @@ public class TaskController {
|
|||
@PostMapping("/count/running")
|
||||
@RequiresPermissions("PROJECT_API_SCENARIO:READ")
|
||||
public int getRunningTasks(@RequestBody TaskCenterRequest request) {
|
||||
return taskService.getRunningTasks(request).size();
|
||||
return taskService.getRunningTasks(request);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@ public class TaskService {
|
|||
return extTaskMapper.getTasks(request);
|
||||
}
|
||||
|
||||
public List<TaskCenterDTO> getRunningTasks(TaskCenterRequest request) {
|
||||
public int getRunningTasks(TaskCenterRequest request) {
|
||||
if (StringUtils.isEmpty(request.getProjectId())) {
|
||||
return new ArrayList<>();
|
||||
return 0;
|
||||
}
|
||||
return extTaskMapper.getRunningTasks(request);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ public class TaskCenterWebSocket {
|
|||
public void onOpen(@PathParam("projectId") String projectId, Session session) {
|
||||
Timer timer = new Timer(true);
|
||||
TaskCenterWebSocket.TaskCenter task = new TaskCenterWebSocket.TaskCenter(session, projectId);
|
||||
timer.schedule(task, 0, 3 * 1000);
|
||||
timer.schedule(task, 0, 6 * 1000);
|
||||
refreshTasks.putIfAbsent(session, timer);
|
||||
}
|
||||
|
||||
|
@ -92,11 +92,14 @@ public class TaskCenterWebSocket {
|
|||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
int taskTotal = taskService.getRunningTasks(request).size();
|
||||
int taskTotal = taskService.getRunningTasks(request);
|
||||
if (!session.isOpen()) {
|
||||
return;
|
||||
}
|
||||
session.getBasicRemote().sendText(taskTotal + "");
|
||||
if (taskTotal == 0) {
|
||||
session.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LogUtil.error(e.getMessage(), e);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<template v-slot:content>
|
||||
<span>{{ $t('commons.task_center') }}</span>
|
||||
</template>
|
||||
<div @click="showTaskCenter" v-if="runningTotal > 0">
|
||||
<div @click="showTaskCenter" v-if="runningTotal > 0" >
|
||||
<el-badge :value="runningTotal" class="item" type="primary">
|
||||
<font-awesome-icon class="icon global focusing" :icon="['fas', 'tasks']"
|
||||
style="font-size: 18px"/>
|
||||
|
@ -61,7 +61,7 @@
|
|||
<div class="report-container">
|
||||
<div v-for="item in taskData" :key="item.id" style="margin-bottom: 5px">
|
||||
<el-card class="ms-card-task" @click.native="showReport(item,$event)">
|
||||
<span><el-link type="primary">{{getModeName(item.executionModule)}} </el-link>: {{ item.name }} </span><br/>
|
||||
<span><el-link type="primary">{{ getModeName(item.executionModule) }} </el-link>: {{ item.name }} </span><br/>
|
||||
<span>
|
||||
执行器:{{ item.actuator }} 由 {{ item.executor }}
|
||||
{{ item.executionTime | timestampFormatDate }}
|
||||
|
@ -217,7 +217,7 @@ export default {
|
|||
}
|
||||
return 60;
|
||||
},
|
||||
getModeName(executionModule){
|
||||
getModeName(executionModule) {
|
||||
switch (executionModule) {
|
||||
case "SCENARIO":
|
||||
return this.$t('test_track.scenario_test_case');
|
||||
|
@ -287,11 +287,23 @@ export default {
|
|||
getTaskRunning() {
|
||||
this.initWebSocket();
|
||||
},
|
||||
calculationRunningTotal() {
|
||||
if (this.taskData) {
|
||||
let total = 0;
|
||||
this.taskData.forEach(item => {
|
||||
if (this.getPercentage(item.executionStatus) !== 100) {
|
||||
total++;
|
||||
}
|
||||
})
|
||||
this.runningTotal = total;
|
||||
}
|
||||
},
|
||||
init() {
|
||||
this.result.loading = true;
|
||||
this.condition.projectId = getCurrentProjectID();
|
||||
this.result = this.$post('/task/center/list', this.condition, response => {
|
||||
this.taskData = response.data;
|
||||
this.calculationRunningTotal();
|
||||
this.initEnd = true;
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue