You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.0 KiB
84 lines
3.0 KiB
package com.iflytop.gd.app.service;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.iflytop.gd.app.mapper.TasksMapper;
|
|
import com.iflytop.gd.app.model.entity.TaskSteps;
|
|
import com.iflytop.gd.app.model.entity.Tasks;
|
|
import com.iflytop.gd.app.model.vo.TaskStepsVO;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* 实验业务实现类
|
|
*/
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class TasksService extends ServiceImpl<TasksMapper, Tasks> {
|
|
private final TaskStepsService taskStepsService;
|
|
private final DeviceStateService deviceStateService;
|
|
|
|
public TaskStepsVO detail(Long id) {
|
|
Tasks tasks = this.getById(id);
|
|
List<TaskSteps> taskSteps = taskStepsService.list(new LambdaQueryWrapper<>(TaskSteps.class).eq(TaskSteps::getTaskId, id));
|
|
TaskStepsVO taskStepsVO = new TaskStepsVO();
|
|
taskStepsVO.setId(tasks.getId());
|
|
taskStepsVO.setName(tasks.getName());
|
|
taskStepsVO.setStartTime(tasks.getStartTime());
|
|
taskStepsVO.setEndTime(tasks.getEndTime());
|
|
taskStepsVO.setCreateUser(tasks.getCreateUser());
|
|
taskStepsVO.setStatus(tasks.getStatus());
|
|
taskStepsVO.setIsDeleted(tasks.getIsDeleted());
|
|
taskStepsVO.setSteps(taskSteps);
|
|
return taskStepsVO;
|
|
}
|
|
|
|
public Tasks start(String taskName) {
|
|
Tasks tasks = new Tasks();
|
|
tasks.setName(taskName);
|
|
tasks.setCreateUser(deviceStateService.getDeviceState().getCurrentUser().getId());
|
|
tasks.setStatus(1);
|
|
tasks.setIsDeleted(0);
|
|
tasks.setStartTime(LocalDateTime.now());
|
|
this.save(tasks);
|
|
TaskSteps taskSteps = new TaskSteps();
|
|
taskSteps.setTaskId(tasks.getId());
|
|
taskSteps.setStepDescription("开始实验");
|
|
taskStepsService.save(taskSteps);
|
|
deviceStateService.setCurrentTasks(tasks);
|
|
return tasks;
|
|
}
|
|
|
|
public Tasks getCurrent() {
|
|
return deviceStateService.getDeviceState().getCurrentTasks();
|
|
}
|
|
|
|
public boolean deleteTasks(String idsStr) {
|
|
List<Long> ids = Arrays.stream(idsStr.split(","))
|
|
.map(Long::parseLong)
|
|
.toList();
|
|
for (Long id : ids) {
|
|
List<TaskSteps> taskSteps = taskStepsService.list(new LambdaQueryWrapper<>(TaskSteps.class).eq(TaskSteps::getTaskId, id));
|
|
taskStepsService.removeByIds(taskSteps.stream().map(TaskSteps::getId).collect(Collectors.toList()));
|
|
this.removeById(id);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void stop() {
|
|
Tasks tasks = deviceStateService.getDeviceState().getCurrentTasks();
|
|
if (tasks != null) {
|
|
tasks.setStatus(2);
|
|
tasks.setEndTime(LocalDateTime.now());
|
|
this.updateById(tasks);
|
|
deviceStateService.setCurrentTasks(null);
|
|
}
|
|
}
|
|
|
|
}
|