add:1.增加后台管理强制取消任务接口。2.修改设置车辆冰量和水量逻辑。3.增加OTA远程更新功能。4.补充国际化。5.增加调度任务不存在同步取消数据库任务。

This commit is contained in:
2026-06-26 10:54:04 +08:00
parent f0459c0a02
commit 59627fe84f
26 changed files with 515 additions and 28 deletions

View File

@@ -102,6 +102,13 @@ public class TaskAPIProvider implements TaskAPI {
return taskService.cancelTask(param);
}
@Override
public WebResponse forceCancelTask(String taskCode) {
CancelTaskRequestParam param = new CancelTaskRequestParam();
param.setTask_code(taskCode);
return taskService.forceCancelTask(param);
}
@Override
public WebResponse queryTaskInfoByRoom(String room) {
// 获取当前存在的任务

View File

@@ -34,6 +34,7 @@ import org.nl.task.param.*;
import org.nl.task.service.TaskService;
import org.nl.util.IdUtil;
import org.nl.util.TaskCodeGeneratorUtil;
import org.springframework.http.HttpStatus;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -91,27 +92,33 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper,Task> implements Tas
Collectors.toList()
));
for (Task task : taskList) {
HttpResponse result = scheduleTaskAPI.queryTaskStatusByTaskId(task.getTask_code());
if (result == null || !result.isOk()){
log.info("获取调度任务状态失败");
continue;
}
JSONObject scheduleTaskStatusJSON = JSONObject.parseObject(result.body());
String scheduleTaskState = scheduleTaskStatusJSON.getString("state");
String newTaskState = "";
if (ScheduleTaskStatusEnum.FINISHED.name().equals(scheduleTaskState)){
newTaskState = TaskStatusEnum.FINISHED.getCode();
} else if (ScheduleTaskStatusEnum.isFinalState(scheduleTaskState)) {
newTaskState = TaskStatusEnum.CANCELED.getCode();
task.setRemark("无路由或取消:" + scheduleTaskState);
} else if (ScheduleTaskStatusEnum.BEING_PROCESSED.name().equals(scheduleTaskState)) {
newTaskState = TaskStatusEnum.EXECUTING.getCode();
// 充电和加水任务的目标点是调度分配的,在查询任务状态时更新目标点。
if (StrUtil.isBlank(task.getDestinations()) && ObjectUtil.isNotEmpty(scheduleTaskStatusJSON.getJSONArray("destinations"))){
JSONObject destination = scheduleTaskStatusJSON.getJSONArray("destinations").getJSONObject(0);
task.setDestinations(destination.getString("locationName"));
HttpResponse result = scheduleTaskAPI.queryTaskStatusByTaskId(task.getTask_code());
if (result.isOk()){
JSONObject scheduleTaskStatusJSON = JSONObject.parseObject(result.body());
String scheduleTaskState = scheduleTaskStatusJSON.getString("state");
if (ScheduleTaskStatusEnum.FINISHED.name().equals(scheduleTaskState)){
newTaskState = TaskStatusEnum.FINISHED.getCode();
} else if (ScheduleTaskStatusEnum.isFinalState(scheduleTaskState)) {
newTaskState = TaskStatusEnum.CANCELED.getCode();
task.setRemark("无路由或取消:" + scheduleTaskState);
} else if (ScheduleTaskStatusEnum.BEING_PROCESSED.name().equals(scheduleTaskState)) {
newTaskState = TaskStatusEnum.EXECUTING.getCode();
// 充电和加水任务的目标点是调度分配的,在查询任务状态时更新目标点。
if (StrUtil.isBlank(task.getDestinations()) && ObjectUtil.isNotEmpty(scheduleTaskStatusJSON.getJSONArray("destinations"))){
JSONObject destination = scheduleTaskStatusJSON.getJSONArray("destinations").getJSONObject(0);
task.setDestinations(destination.getString("locationName"));
}
task.setProcessingVehicle(scheduleTaskStatusJSON.getString("processingVehicle"));
}
}else {
log.info("获取调度任务状态失败");
// status = 404 调度返回未找到该任务 任务状态更新成已取消
if (result.getStatus() == HttpStatus.NOT_FOUND.value()){
newTaskState = TaskStatusEnum.CANCELED.getCode();
task.setRemark("调度不存在该任务");
}
task.setProcessingVehicle(scheduleTaskStatusJSON.getString("processingVehicle"));
}
// 任务状态改变 进行更新
if (StrUtil.isNotBlank(newTaskState) && !newTaskState.equals(task.getStatus())){