Browse Source

feat: 实验记录

master
guoapeng 5 months ago
parent
commit
4e818c66a3
  1. 18
      src/main/java/com/qyft/gd/mapper/TaskStepsMapper.java
  2. 13
      src/main/java/com/qyft/gd/model/entity/TaskSteps.java
  3. 4
      src/main/java/com/qyft/gd/model/vo/TaskListVO.java
  4. 18
      src/main/java/com/qyft/gd/service/TaskStepsService.java
  5. 40
      src/main/java/com/qyft/gd/service/impl/TaskStepsServiceImpl.java
  6. 63
      src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java
  7. 8
      src/main/resources/mapper/TaskStepsMapper.xml

18
src/main/java/com/qyft/gd/mapper/TaskStepsMapper.java

@ -0,0 +1,18 @@
package com.qyft.gd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qyft.gd.model.entity.TaskSteps;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 实验持久层接口
*/
@Mapper
public interface TaskStepsMapper extends BaseMapper<TaskSteps> {
List<TaskSteps> getTaskStepsByTaskId(Long taskId);
}

13
src/main/java/com/qyft/gd/model/entity/TaskSteps.java

@ -2,23 +2,26 @@
package com.qyft.gd.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qyft.gd.system.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Schema(description = "实验步骤")
@TableName("task_steps")
@Data
public class TaskSteps extends BaseEntity {
public class TaskSteps {
@NotBlank
@Schema(description = "id")
private Long id;
@NotBlank
@Schema(description = "实验id")
private String task_id;
private Long taskId;
@NotBlank
@Schema(description = "步骤描述")
private String step_description;
private String stepDescription;
}

4
src/main/java/com/qyft/gd/model/vo/TaskListVO.java

@ -1,5 +1,6 @@
package com.qyft.gd.model.vo;
import com.qyft.gd.model.entity.TaskSteps;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@ -28,4 +29,7 @@ public class TaskListVO {
@Schema(description = "状态 1 执行中 2 执行完毕")
private Integer status;
@Schema(description = "实验步骤")
private List<TaskSteps> steps;
}

18
src/main/java/com/qyft/gd/service/TaskStepsService.java

@ -0,0 +1,18 @@
package com.qyft.gd.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qyft.gd.model.entity.TaskSteps;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import com.qyft.gd.system.common.base.BasePageQuery;
import java.util.List;
/**
* 实验业务接口
*/
public interface TaskStepsService extends IService<TaskSteps> {
List<TaskSteps> getTaskStepsByTaskId(Long taskId);
int addTaskSteps(TaskSteps taskSteps);
}

40
src/main/java/com/qyft/gd/service/impl/TaskStepsServiceImpl.java

@ -0,0 +1,40 @@
package com.qyft.gd.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qyft.gd.mapper.TaskStepsMapper;
import com.qyft.gd.mapper.TasksMapper;
import com.qyft.gd.model.entity.TaskSteps;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import com.qyft.gd.service.TaskStepsService;
import com.qyft.gd.service.TasksService;
import com.qyft.gd.system.common.base.BasePageQuery;
import com.qyft.gd.system.model.entity.User;
import com.qyft.gd.system.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 实验业务实现类
*/
@Service
@RequiredArgsConstructor
public class TaskStepsServiceImpl extends ServiceImpl<TaskStepsMapper, TaskSteps> implements TaskStepsService {
private final TaskStepsMapper taskStepsMapper;
@Override
public List<TaskSteps> getTaskStepsByTaskId(Long taskId) {
return taskStepsMapper.getTaskStepsByTaskId(taskId);
}
@Override
public int addTaskSteps(TaskSteps taskSteps) {
return this.baseMapper.insert(taskSteps);
}
}

63
src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java

@ -1,11 +1,15 @@
package com.qyft.gd.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qyft.gd.mapper.TaskStepsMapper;
import com.qyft.gd.mapper.TasksMapper;
import com.qyft.gd.model.entity.TaskSteps;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import com.qyft.gd.service.TaskStepsService;
import com.qyft.gd.service.TasksService;
import com.qyft.gd.system.common.base.BasePageQuery;
import com.qyft.gd.system.model.entity.User;
@ -15,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -26,18 +31,60 @@ public class TasksServiceImpl extends ServiceImpl<TasksMapper, Tasks> implements
private final TasksMapper tasksMapper;
private final UserService userService;
private final TaskStepsMapper taskStepsMapper;
private final TaskStepsService taskStepsService;
@Override
public IPage<TaskListVO> getPage(BasePageQuery pageQuery) {
// 构建分页对象
Page<TaskListVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
return tasksMapper.selectPage(page);
IPage<TaskListVO> tasksIPage = tasksMapper.selectPage(page);
List<Long> taskIds = tasksIPage.getRecords().stream()
.map(TaskListVO::getId)
.toList();
QueryWrapper<TaskSteps> queryWrapper = new QueryWrapper<>();
queryWrapper.in("task_id", taskIds);
List<TaskSteps> list = taskStepsMapper.selectList(queryWrapper);
Map<Long, List<TaskSteps>> map = list.stream()
.collect(Collectors.groupingBy(TaskSteps::getTaskId));
List<TaskListVO> taskList = tasksIPage.getRecords().stream().map(task -> {
TaskListVO taskListVO = new TaskListVO();
taskListVO.setId(task.getId());
taskListVO.setName(task.getName());
taskListVO.setStatus(task.getStatus());
taskListVO.setStartTime(task.getStartTime());
taskListVO.setEndTime(task.getEndTime());
taskListVO.setCreateUser(task.getCreateUser());
List<TaskSteps> steps = map.get(task.getId());
taskListVO.setSteps(steps);
return taskListVO;
}).collect(Collectors.toList());
Page<TaskListVO> resultPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
resultPage.setTotal(tasksIPage.getTotal());
resultPage.setRecords(taskList);
return resultPage;
}
@Override
public TaskListVO selectById(Long id) {
return tasksMapper.selectById(id);
TaskListVO taskListVO = tasksMapper.selectById(id);
List<TaskSteps> taskSteps = taskStepsMapper.selectList(new QueryWrapper<TaskSteps>().eq("task_id", id));
taskListVO.setSteps(taskSteps);
return taskListVO;
}
@Override
@ -48,8 +95,12 @@ public class TasksServiceImpl extends ServiceImpl<TasksMapper, Tasks> implements
tasks.setCreateUser(user.getId());
tasks.setStatus(1);
tasks.setIsDeleted(0);
return tasksMapper.insert(tasks);
tasksMapper.insert(tasks);
TaskSteps taskSteps = new TaskSteps();
taskSteps.setTaskId(tasks.getId());
taskSteps.setStepDescription("开始实验");
taskStepsService.addTaskSteps(taskSteps);
return Math.toIntExact(tasks.getId());
}
@Override
@ -62,6 +113,10 @@ public class TasksServiceImpl extends ServiceImpl<TasksMapper, Tasks> implements
@Override
public int stopTask(Long taskId) {
TaskSteps taskSteps = new TaskSteps();
taskSteps.setTaskId(taskId);
taskSteps.setStepDescription("结束实验");
taskStepsService.addTaskSteps(taskSteps);
return tasksMapper.stopTask(taskId);
}

8
src/main/resources/mapper/TaskStepsMapper.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qyft.gd.mapper.TaskStepsMapper">
<select id="getTaskStepsByTaskId" resultType="com.qyft.gd.model.entity.TaskSteps">
SELECT * FROM task_steps WHERE task_id = #{taskId}
</select>
</mapper>
Loading…
Cancel
Save