diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index 12c2041..ea467a3 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -2,7 +2,9 @@ import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.RegionPlanDTO; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.service.IRegionPlanService; +import com.casic.missiles.modular.system.service.ITaskService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,9 +21,11 @@ public class TaskController { private final IRegionPlanService regionPlanService; + private final ITaskService taskService; - public TaskController(IRegionPlanService regionPlanService) { + public TaskController(IRegionPlanService regionPlanService, ITaskService taskService) { this.regionPlanService = regionPlanService; + this.taskService = taskService; } /** @@ -56,4 +60,14 @@ } return ResponseData.success(regionPlanDTO); } + + /** + * 所有任务数据-不分页 + */ + @GetMapping(value = "/allTask") + @ResponseBody + public Object allTask() { + List allTask = taskService.selectAllTask(); + return ResponseData.success(allTask); + } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index 12c2041..ea467a3 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -2,7 +2,9 @@ import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.RegionPlanDTO; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.service.IRegionPlanService; +import com.casic.missiles.modular.system.service.ITaskService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,9 +21,11 @@ public class TaskController { private final IRegionPlanService regionPlanService; + private final ITaskService taskService; - public TaskController(IRegionPlanService regionPlanService) { + public TaskController(IRegionPlanService regionPlanService, ITaskService taskService) { this.regionPlanService = regionPlanService; + this.taskService = taskService; } /** @@ -56,4 +60,14 @@ } return ResponseData.success(regionPlanDTO); } + + /** + * 所有任务数据-不分页 + */ + @GetMapping(value = "/allTask") + @ResponseBody + public Object allTask() { + List allTask = taskService.selectAllTask(); + return ResponseData.success(allTask); + } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java new file mode 100644 index 0000000..3f7c988 --- /dev/null +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.dto; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.modular.system.model.Task; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author a203 + */ +@Data +public class TaskDTO { + /** + * 数据库主键 + */ + private Long id; + + /** + * 机器人ID + */ + private Integer robotId; + + /** + * 任务生成的时间 + */ + private String createTime; + + /** + * 任务结束的时间 + */ + private String endTime; + + /** + * 任务类型 + */ + private String taskType; + + /** + * 任务数据 + */ + private DirectedTask directedTask; + private RouteTask routeTask; + private FlightTask flightTask; + private ResideTask resideTask; + private PutTask putTask; + + @Data + public static class DirectedTask { + /** + * {"headingAngle":2.56,"taskDepth":26.6} + */ + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class RouteTask { + /** + * {"routeCount":1,"taskDepth":256.1,"robotRoutes":[{"lat":17.39223199775081,"lng":109.32222199129043}]} + */ + private Integer routeCount; + private Double taskDepth; + private List robotRoutes; + } + + @Data + public static class FlightTask { + /** + * {"duration":43707,"headingAngle":27.310000000000002,"taskDepth":256.1} + */ + private Integer duration; + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class ResideTask { + /** + * {"duration":43707,"depth":256.1,"lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer duration; + private Double depth; + private Double lng; + private Double lat; + } + + @Data + public static class PutTask { + /** + * {"count":1,"ids":"1","lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer count; + private String ids; + private Double lng; + private Double lat; + } + + @Data + public static class Point { + private Double lng; + private Double lat; + } + + public TaskDTO(Task task) { + this.id = task.getId(); + this.robotId = task.getRobotId(); + this.createTime = task.getCreateTime(); + this.endTime = task.getEndTime(); + String taskType = task.getTaskType(); + this.taskType = taskType; + String taskData = task.getTaskData(); + if (taskData != null && !"".equals(taskData)) { + JSONObject taskObject = JSON.parseObject(taskData); + switch (taskType) { + case "1": + DirectedTask directedTask = new DirectedTask(); + directedTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + directedTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.directedTask = directedTask; + break; + case "2": + RouteTask routeTask = new RouteTask(); + int routeCount = taskObject.getIntValue("routeCount"); + routeTask.setRouteCount(routeCount); + routeTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + List routes = new ArrayList<>(); + JSONArray array = taskObject.getJSONArray("robotRoutes"); + for (int i = 0; i < array.size(); i++) { + JSONObject object = array.getJSONObject(i); + Point point = new Point(); + point.setLng(object.getDoubleValue("lng")); + point.setLat(object.getDoubleValue("lat")); + + routes.add(point); + } + routeTask.setRobotRoutes(routes); + + this.routeTask = routeTask; + break; + case "3": + FlightTask flightTask = new FlightTask(); + flightTask.setDuration(taskObject.getIntValue("duration")); + flightTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + flightTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.flightTask = flightTask; + break; + case "4": + ResideTask resideTask = new ResideTask(); + resideTask.setDuration(taskObject.getIntValue("duration")); + resideTask.setDepth(taskObject.getDoubleValue("depth")); + resideTask.setLng(taskObject.getDoubleValue("lng")); + resideTask.setLat(taskObject.getDoubleValue("lat")); + + this.resideTask = resideTask; + break; + case "5": + PutTask putTask = new PutTask(); + putTask.setCount(taskObject.getIntValue("count")); + putTask.setIds(taskObject.getString("ids")); + putTask.setLng(taskObject.getDoubleValue("lng")); + putTask.setLat(taskObject.getDoubleValue("lat")); + + this.putTask = putTask; + break; + default: + break; + } + } + } +} diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index 12c2041..ea467a3 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -2,7 +2,9 @@ import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.RegionPlanDTO; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.service.IRegionPlanService; +import com.casic.missiles.modular.system.service.ITaskService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,9 +21,11 @@ public class TaskController { private final IRegionPlanService regionPlanService; + private final ITaskService taskService; - public TaskController(IRegionPlanService regionPlanService) { + public TaskController(IRegionPlanService regionPlanService, ITaskService taskService) { this.regionPlanService = regionPlanService; + this.taskService = taskService; } /** @@ -56,4 +60,14 @@ } return ResponseData.success(regionPlanDTO); } + + /** + * 所有任务数据-不分页 + */ + @GetMapping(value = "/allTask") + @ResponseBody + public Object allTask() { + List allTask = taskService.selectAllTask(); + return ResponseData.success(allTask); + } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java new file mode 100644 index 0000000..3f7c988 --- /dev/null +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.dto; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.modular.system.model.Task; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author a203 + */ +@Data +public class TaskDTO { + /** + * 数据库主键 + */ + private Long id; + + /** + * 机器人ID + */ + private Integer robotId; + + /** + * 任务生成的时间 + */ + private String createTime; + + /** + * 任务结束的时间 + */ + private String endTime; + + /** + * 任务类型 + */ + private String taskType; + + /** + * 任务数据 + */ + private DirectedTask directedTask; + private RouteTask routeTask; + private FlightTask flightTask; + private ResideTask resideTask; + private PutTask putTask; + + @Data + public static class DirectedTask { + /** + * {"headingAngle":2.56,"taskDepth":26.6} + */ + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class RouteTask { + /** + * {"routeCount":1,"taskDepth":256.1,"robotRoutes":[{"lat":17.39223199775081,"lng":109.32222199129043}]} + */ + private Integer routeCount; + private Double taskDepth; + private List robotRoutes; + } + + @Data + public static class FlightTask { + /** + * {"duration":43707,"headingAngle":27.310000000000002,"taskDepth":256.1} + */ + private Integer duration; + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class ResideTask { + /** + * {"duration":43707,"depth":256.1,"lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer duration; + private Double depth; + private Double lng; + private Double lat; + } + + @Data + public static class PutTask { + /** + * {"count":1,"ids":"1","lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer count; + private String ids; + private Double lng; + private Double lat; + } + + @Data + public static class Point { + private Double lng; + private Double lat; + } + + public TaskDTO(Task task) { + this.id = task.getId(); + this.robotId = task.getRobotId(); + this.createTime = task.getCreateTime(); + this.endTime = task.getEndTime(); + String taskType = task.getTaskType(); + this.taskType = taskType; + String taskData = task.getTaskData(); + if (taskData != null && !"".equals(taskData)) { + JSONObject taskObject = JSON.parseObject(taskData); + switch (taskType) { + case "1": + DirectedTask directedTask = new DirectedTask(); + directedTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + directedTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.directedTask = directedTask; + break; + case "2": + RouteTask routeTask = new RouteTask(); + int routeCount = taskObject.getIntValue("routeCount"); + routeTask.setRouteCount(routeCount); + routeTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + List routes = new ArrayList<>(); + JSONArray array = taskObject.getJSONArray("robotRoutes"); + for (int i = 0; i < array.size(); i++) { + JSONObject object = array.getJSONObject(i); + Point point = new Point(); + point.setLng(object.getDoubleValue("lng")); + point.setLat(object.getDoubleValue("lat")); + + routes.add(point); + } + routeTask.setRobotRoutes(routes); + + this.routeTask = routeTask; + break; + case "3": + FlightTask flightTask = new FlightTask(); + flightTask.setDuration(taskObject.getIntValue("duration")); + flightTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + flightTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.flightTask = flightTask; + break; + case "4": + ResideTask resideTask = new ResideTask(); + resideTask.setDuration(taskObject.getIntValue("duration")); + resideTask.setDepth(taskObject.getDoubleValue("depth")); + resideTask.setLng(taskObject.getDoubleValue("lng")); + resideTask.setLat(taskObject.getDoubleValue("lat")); + + this.resideTask = resideTask; + break; + case "5": + PutTask putTask = new PutTask(); + putTask.setCount(taskObject.getIntValue("count")); + putTask.setIds(taskObject.getString("ids")); + putTask.setLng(taskObject.getDoubleValue("lng")); + putTask.setLat(taskObject.getDoubleValue("lat")); + + this.putTask = putTask; + break; + default: + break; + } + } + } +} diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java index 8541fc5..65bc010 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.model.Task; +import java.util.List; + /** * 任务 服务类 * @@ -15,4 +18,11 @@ * @param robotId */ void updateTaskById(int robotId); + + /** + * 根据机器人ID查找到未完成任务的Task + * + * @return {@link List} + */ + List selectAllTask(); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java index 12c2041..ea467a3 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/controller/TaskController.java @@ -2,7 +2,9 @@ import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.RegionPlanDTO; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.service.IRegionPlanService; +import com.casic.missiles.modular.system.service.ITaskService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,9 +21,11 @@ public class TaskController { private final IRegionPlanService regionPlanService; + private final ITaskService taskService; - public TaskController(IRegionPlanService regionPlanService) { + public TaskController(IRegionPlanService regionPlanService, ITaskService taskService) { this.regionPlanService = regionPlanService; + this.taskService = taskService; } /** @@ -56,4 +60,14 @@ } return ResponseData.success(regionPlanDTO); } + + /** + * 所有任务数据-不分页 + */ + @GetMapping(value = "/allTask") + @ResponseBody + public Object allTask() { + List allTask = taskService.selectAllTask(); + return ResponseData.success(allTask); + } } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java new file mode 100644 index 0000000..3f7c988 --- /dev/null +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/dto/TaskDTO.java @@ -0,0 +1,176 @@ +package com.casic.missiles.modular.system.dto; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.modular.system.model.Task; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author a203 + */ +@Data +public class TaskDTO { + /** + * 数据库主键 + */ + private Long id; + + /** + * 机器人ID + */ + private Integer robotId; + + /** + * 任务生成的时间 + */ + private String createTime; + + /** + * 任务结束的时间 + */ + private String endTime; + + /** + * 任务类型 + */ + private String taskType; + + /** + * 任务数据 + */ + private DirectedTask directedTask; + private RouteTask routeTask; + private FlightTask flightTask; + private ResideTask resideTask; + private PutTask putTask; + + @Data + public static class DirectedTask { + /** + * {"headingAngle":2.56,"taskDepth":26.6} + */ + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class RouteTask { + /** + * {"routeCount":1,"taskDepth":256.1,"robotRoutes":[{"lat":17.39223199775081,"lng":109.32222199129043}]} + */ + private Integer routeCount; + private Double taskDepth; + private List robotRoutes; + } + + @Data + public static class FlightTask { + /** + * {"duration":43707,"headingAngle":27.310000000000002,"taskDepth":256.1} + */ + private Integer duration; + private Double headingAngle; + private Double taskDepth; + } + + @Data + public static class ResideTask { + /** + * {"duration":43707,"depth":256.1,"lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer duration; + private Double depth; + private Double lng; + private Double lat; + } + + @Data + public static class PutTask { + /** + * {"count":1,"ids":"1","lng":109.32222199129043,"lat":17.39223199775081} + */ + private Integer count; + private String ids; + private Double lng; + private Double lat; + } + + @Data + public static class Point { + private Double lng; + private Double lat; + } + + public TaskDTO(Task task) { + this.id = task.getId(); + this.robotId = task.getRobotId(); + this.createTime = task.getCreateTime(); + this.endTime = task.getEndTime(); + String taskType = task.getTaskType(); + this.taskType = taskType; + String taskData = task.getTaskData(); + if (taskData != null && !"".equals(taskData)) { + JSONObject taskObject = JSON.parseObject(taskData); + switch (taskType) { + case "1": + DirectedTask directedTask = new DirectedTask(); + directedTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + directedTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.directedTask = directedTask; + break; + case "2": + RouteTask routeTask = new RouteTask(); + int routeCount = taskObject.getIntValue("routeCount"); + routeTask.setRouteCount(routeCount); + routeTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + List routes = new ArrayList<>(); + JSONArray array = taskObject.getJSONArray("robotRoutes"); + for (int i = 0; i < array.size(); i++) { + JSONObject object = array.getJSONObject(i); + Point point = new Point(); + point.setLng(object.getDoubleValue("lng")); + point.setLat(object.getDoubleValue("lat")); + + routes.add(point); + } + routeTask.setRobotRoutes(routes); + + this.routeTask = routeTask; + break; + case "3": + FlightTask flightTask = new FlightTask(); + flightTask.setDuration(taskObject.getIntValue("duration")); + flightTask.setHeadingAngle(taskObject.getDoubleValue("headingAngle")); + flightTask.setTaskDepth(taskObject.getDoubleValue("taskDepth")); + + this.flightTask = flightTask; + break; + case "4": + ResideTask resideTask = new ResideTask(); + resideTask.setDuration(taskObject.getIntValue("duration")); + resideTask.setDepth(taskObject.getDoubleValue("depth")); + resideTask.setLng(taskObject.getDoubleValue("lng")); + resideTask.setLat(taskObject.getDoubleValue("lat")); + + this.resideTask = resideTask; + break; + case "5": + PutTask putTask = new PutTask(); + putTask.setCount(taskObject.getIntValue("count")); + putTask.setIds(taskObject.getString("ids")); + putTask.setLng(taskObject.getDoubleValue("lng")); + putTask.setLat(taskObject.getDoubleValue("lat")); + + this.putTask = putTask; + break; + default: + break; + } + } + } +} diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java index 8541fc5..65bc010 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/ITaskService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.model.Task; +import java.util.List; + /** * 任务 服务类 * @@ -15,4 +18,11 @@ * @param robotId */ void updateTaskById(int robotId); + + /** + * 根据机器人ID查找到未完成任务的Task + * + * @return {@link List} + */ + List selectAllTask(); } diff --git a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/TaskServiceImpl.java b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/TaskServiceImpl.java index 855fe8e..bf95748 100644 --- a/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/TaskServiceImpl.java +++ b/casic-task/src/main/java/com/casic/missiles/modular/system/service/impl/TaskServiceImpl.java @@ -1,12 +1,19 @@ package com.casic.missiles.modular.system.service.impl; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.RequestValidException; import com.casic.missiles.modular.system.dao.TaskMapper; +import com.casic.missiles.modular.system.dto.TaskDTO; import com.casic.missiles.modular.system.model.Task; import com.casic.missiles.modular.system.service.ITaskService; import com.casic.missiles.modular.system.utils.TimeUtil; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * @author a203 */ @@ -19,8 +26,20 @@ @Override public void updateTaskById(int robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("ROBOT_ID", robotId); + Assert.isFalse(this.count(query) == 0, () -> new RequestValidException("任务不存在,无法结束任务")); Task task = this.baseMapper.selectTaskById(robotId); task.setEndTime(TimeUtil.getCurrentTime()); updateById(task); } + + @Override + public List selectAllTask() { + List tasks = new ArrayList<>(); + for (Task task : list()) { + tasks.add(new TaskDTO(task)); + } + return tasks; + } }