Browse Source

feat: 实验接口实现

master
guoapeng 6 months ago
parent
commit
eb5dc2739c
  1. 47
      src/main/java/com/qyft/gd/controller/TasksController.java
  2. 21
      src/main/java/com/qyft/gd/mapper/TasksMapper.java
  3. 10
      src/main/java/com/qyft/gd/model/dto/TaskDTO.java
  4. 14
      src/main/java/com/qyft/gd/model/entity/Tasks.java
  5. 31
      src/main/java/com/qyft/gd/model/vo/TaskListVO.java
  6. 18
      src/main/java/com/qyft/gd/service/TasksService.java
  7. 68
      src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java
  8. 25
      src/main/resources/mapper/TasksMapper.xml

47
src/main/java/com/qyft/gd/controller/TasksController.java

@ -1,7 +1,15 @@
package com.qyft.gd.controller;
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.qyft.gd.model.dto.TaskDTO;
import com.qyft.gd.model.entity.Ores;
import com.qyft.gd.model.entity.Solutions;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import com.qyft.gd.service.CraftsService;
import com.qyft.gd.service.TasksService;
import com.qyft.gd.system.common.base.BasePageQuery;
import com.qyft.gd.system.common.result.PageResult;
import com.qyft.gd.system.common.result.Result;
@ -12,51 +20,50 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
@Tag(name = "实验")
@RestController
@RequestMapping("/api/tasks")
@RequiredArgsConstructor
@Slf4j
public class TasksController {
private final TasksService tasksService;
@Operation(summary = "实验列表")
@GetMapping("/list")
public PageResult<Tasks> getAllTasks(BasePageQuery pageQuery) {
return PageResult.success(null);
public PageResult<TaskListVO> getAllTasks(BasePageQuery pageQuery) {
IPage<TaskListVO> result = tasksService.getPage(pageQuery);
return PageResult.success(result);
}
@Operation(summary = "实验详情")
@GetMapping("/")
public Result<Tasks> detail(@RequestParam Long id) {
return Result.success(null);
@GetMapping("/{id}")
public Result<TaskListVO> detail(@PathVariable Long id) {
return Result.success(tasksService.selectById(id));
}
@Operation(summary = "添加新实验")
@PostMapping("/")
public Result<String> addTask(@RequestBody Tasks task) {
return Result.success();
public Result<Integer> addTask(@RequestBody TaskDTO dto) {
return Result.success(tasksService.addTask(dto.getName()));
}
@Operation(summary = "更新实验")
@PutMapping("/{id}")
public Result<String> updateTask(@PathVariable Long id, @RequestBody Tasks task) {
return Result.success();
@PutMapping("/")
public Result<Boolean> updateTask(@RequestBody Tasks task) {
return Result.success(tasksService.updateById(task));
}
@Operation(summary = "删除实验")
@DeleteMapping("/{ids}")
public Result<String> deleteTask(@Parameter(description = "实验ID,多个以英文逗号(,)分割") @PathVariable String ids) {
return Result.success();
}
@Operation(summary = "开始实验接口")
@PostMapping("/start")
public Result<String> startTask(@Parameter(description = "实验id") @RequestParam Long taskId) {
return Result.success();
public Result<Integer> deleteTask(@Parameter(description = "实验ID,多个以英文逗号(,)分割") @PathVariable String ids) {
return Result.success(tasksService.removeByIds(ids));
}
@Operation(summary = "停止实验")
@PostMapping("/stop")
public Result<String> stopTask(@Parameter(description = "实验id") @RequestParam Long taskId) {
return Result.success();
public Result<Integer> stopTask(@Parameter(description = "实验id") @RequestParam Long taskId) {
return Result.success(tasksService.stopTask(taskId));
}
}

21
src/main/java/com/qyft/gd/mapper/TasksMapper.java

@ -0,0 +1,21 @@
package com.qyft.gd.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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 TasksMapper extends BaseMapper<Tasks> {
Page<TaskListVO> selectPage(Page<TaskListVO> page);
TaskListVO selectById(Long id);
Integer removeByIds(List<Long> ids);
int stopTask(Long taskId);
}

10
src/main/java/com/qyft/gd/model/dto/TaskDTO.java

@ -0,0 +1,10 @@
package com.qyft.gd.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class TaskDTO {
@Schema(description = "实验名称")
private String name;
}

14
src/main/java/com/qyft/gd/model/entity/Tasks.java

@ -20,17 +20,17 @@ public class Tasks extends BaseEntity {
@NotBlank
@Schema(description = "开始时间")
private String start_time;
private String startTime;
@Schema(description = "创建人")
private String createUser;
private Long createUser;
@Schema(description = "结束时间")
private String end_time;
private String endTime;
@Schema(description = "状态")
private String status;
@Schema(description = "状态 1 执行中 2 执行完毕")
private Integer status;
@Schema(description = "是否删除")
private String is_deleted;
@Schema(description = "是否删除 0 未删除 1 已删除")
private Integer isDeleted;
}

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

@ -0,0 +1,31 @@
package com.qyft.gd.model.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = false)
@Data
public class TaskListVO {
@Schema(description = "实验id")
private Long id;
@Schema(description = "实验名称")
private String name;
@NotBlank
@Schema(description = "开始时间")
private String startTime;
@Schema(description = "创建人")
private Long createUser;
@Schema(description = "结束时间")
private String endTime;
@Schema(description = "状态 1 执行中 2 执行完毕")
private Integer status;
}

18
src/main/java/com/qyft/gd/service/TasksService.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.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
import com.qyft.gd.system.common.base.BasePageQuery;
/**
* 实验业务接口
*/
public interface TasksService extends IService<Tasks> {
IPage<TaskListVO> getPage(BasePageQuery pageQuery);
TaskListVO selectById(Long id);
int addTask(String taskName);
int removeByIds(String ids);
int stopTask(Long taskId);
}

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

@ -0,0 +1,68 @@
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.TasksMapper;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.vo.TaskListVO;
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 TasksServiceImpl extends ServiceImpl<TasksMapper, Tasks> implements TasksService {
private final TasksMapper tasksMapper;
private final UserService userService;
@Override
public IPage<TaskListVO> getPage(BasePageQuery pageQuery) {
// 构建分页对象
Page<TaskListVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
return tasksMapper.selectPage(page);
}
@Override
public TaskListVO selectById(Long id) {
return tasksMapper.selectById(id);
}
@Override
public int addTask(String taskName) {
Tasks tasks = new Tasks();
tasks.setName(taskName);
User user = userService.currentUser();
tasks.setCreateUser(user.getId());
tasks.setStatus(1);
tasks.setIsDeleted(0);
return tasksMapper.insert(tasks);
}
@Override
public int removeByIds(String ids) {
List<Long> idsArr = Arrays.stream(ids.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
return tasksMapper.removeByIds(idsArr);
}
@Override
public int stopTask(Long taskId) {
return tasksMapper.stopTask(taskId);
}
}

25
src/main/resources/mapper/TasksMapper.xml

@ -0,0 +1,25 @@
<?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.TasksMapper">
<select id="selectPage" resultType="com.qyft.gd.model.vo.TaskListVO">
SELECT * FROM tasks WHERE is_deleted = 0
</select>
<select id="selectById" resultType="com.qyft.gd.model.vo.TaskListVO">
SELECT * FROM tasks WHERE is_deleted = 0 AND id = #{id}
</select>
<update id="removeByIds">
UPDATE tasks
SET is_deleted = 1
WHERE id IN
<foreach collection="list" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="stopTask">
UPDATE tasks
SET status = 2
WHERE id = #{taskId} AND is_deleted = 0
</update>
</mapper>
Loading…
Cancel
Save