石墨消解仪后端服务
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

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);
}
}
}