From eb5dc2739cd072399ff529ef9ce4b36ad959933d Mon Sep 17 00:00:00 2001 From: guoapeng Date: Thu, 20 Feb 2025 16:12:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E9=AA=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qyft/gd/controller/TasksController.java | 47 ++++++++------- src/main/java/com/qyft/gd/mapper/TasksMapper.java | 21 +++++++ src/main/java/com/qyft/gd/model/dto/TaskDTO.java | 10 ++++ src/main/java/com/qyft/gd/model/entity/Tasks.java | 14 ++--- src/main/java/com/qyft/gd/model/vo/TaskListVO.java | 31 ++++++++++ .../java/com/qyft/gd/service/TasksService.java | 18 ++++++ .../com/qyft/gd/service/impl/TasksServiceImpl.java | 68 ++++++++++++++++++++++ src/main/resources/mapper/TasksMapper.xml | 25 ++++++++ 8 files changed, 207 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/qyft/gd/mapper/TasksMapper.java create mode 100644 src/main/java/com/qyft/gd/model/dto/TaskDTO.java create mode 100644 src/main/java/com/qyft/gd/model/vo/TaskListVO.java create mode 100644 src/main/java/com/qyft/gd/service/TasksService.java create mode 100644 src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java create mode 100644 src/main/resources/mapper/TasksMapper.xml diff --git a/src/main/java/com/qyft/gd/controller/TasksController.java b/src/main/java/com/qyft/gd/controller/TasksController.java index 626f189..fb2966e 100644 --- a/src/main/java/com/qyft/gd/controller/TasksController.java +++ b/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 getAllTasks(BasePageQuery pageQuery) { - return PageResult.success(null); + public PageResult getAllTasks(BasePageQuery pageQuery) { + IPage result = tasksService.getPage(pageQuery); + return PageResult.success(result); } @Operation(summary = "实验详情") - @GetMapping("/") - public Result detail(@RequestParam Long id) { - return Result.success(null); + @GetMapping("/{id}") + public Result detail(@PathVariable Long id) { + return Result.success(tasksService.selectById(id)); } @Operation(summary = "添加新实验") @PostMapping("/") - public Result addTask(@RequestBody Tasks task) { - return Result.success(); + public Result addTask(@RequestBody TaskDTO dto) { + return Result.success(tasksService.addTask(dto.getName())); } @Operation(summary = "更新实验") - @PutMapping("/{id}") - public Result updateTask(@PathVariable Long id, @RequestBody Tasks task) { - return Result.success(); + @PutMapping("/") + public Result updateTask(@RequestBody Tasks task) { + + return Result.success(tasksService.updateById(task)); } @Operation(summary = "删除实验") @DeleteMapping("/{ids}") - public Result deleteTask(@Parameter(description = "实验ID,多个以英文逗号(,)分割") @PathVariable String ids) { - return Result.success(); - } - - @Operation(summary = "开始实验接口") - @PostMapping("/start") - public Result startTask(@Parameter(description = "实验id") @RequestParam Long taskId) { - return Result.success(); + public Result deleteTask(@Parameter(description = "实验ID,多个以英文逗号(,)分割") @PathVariable String ids) { + return Result.success(tasksService.removeByIds(ids)); } @Operation(summary = "停止实验") @PostMapping("/stop") - public Result stopTask(@Parameter(description = "实验id") @RequestParam Long taskId) { - return Result.success(); + public Result stopTask(@Parameter(description = "实验id") @RequestParam Long taskId) { + return Result.success(tasksService.stopTask(taskId)); } } diff --git a/src/main/java/com/qyft/gd/mapper/TasksMapper.java b/src/main/java/com/qyft/gd/mapper/TasksMapper.java new file mode 100644 index 0000000..66caf18 --- /dev/null +++ b/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 { + Page selectPage(Page page); + TaskListVO selectById(Long id); + Integer removeByIds(List ids); + + int stopTask(Long taskId); +} diff --git a/src/main/java/com/qyft/gd/model/dto/TaskDTO.java b/src/main/java/com/qyft/gd/model/dto/TaskDTO.java new file mode 100644 index 0000000..84ced2e --- /dev/null +++ b/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; +} diff --git a/src/main/java/com/qyft/gd/model/entity/Tasks.java b/src/main/java/com/qyft/gd/model/entity/Tasks.java index c6b32e4..ee73103 100644 --- a/src/main/java/com/qyft/gd/model/entity/Tasks.java +++ b/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; } diff --git a/src/main/java/com/qyft/gd/model/vo/TaskListVO.java b/src/main/java/com/qyft/gd/model/vo/TaskListVO.java new file mode 100644 index 0000000..d47eb40 --- /dev/null +++ b/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; +} diff --git a/src/main/java/com/qyft/gd/service/TasksService.java b/src/main/java/com/qyft/gd/service/TasksService.java new file mode 100644 index 0000000..a97f25c --- /dev/null +++ b/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 { + IPage getPage(BasePageQuery pageQuery); + TaskListVO selectById(Long id); + int addTask(String taskName); + int removeByIds(String ids); + int stopTask(Long taskId); +} diff --git a/src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java b/src/main/java/com/qyft/gd/service/impl/TasksServiceImpl.java new file mode 100644 index 0000000..13eab07 --- /dev/null +++ b/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 implements TasksService { + + private final TasksMapper tasksMapper; + private final UserService userService; + + @Override + public IPage getPage(BasePageQuery pageQuery) { + // 构建分页对象 + Page 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 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); + } + +} diff --git a/src/main/resources/mapper/TasksMapper.xml b/src/main/resources/mapper/TasksMapper.xml new file mode 100644 index 0000000..ae9e2e1 --- /dev/null +++ b/src/main/resources/mapper/TasksMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + UPDATE tasks + SET is_deleted = 1 + WHERE id IN + + #{id} + + + + UPDATE tasks + SET status = 2 + WHERE id = #{taskId} AND is_deleted = 0 + +