From d06e0eb74472b20a2ee6929e58f00594dc97f434 Mon Sep 17 00:00:00 2001 From: wangguangyuan Date: Fri, 17 Oct 2025 15:01:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E7=8B=97=EF=BC=8C=E6=97=A0?= =?UTF-8?q?=E4=BA=BA=E6=9C=BA=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect/job/client/TaskExecClient.java | 3 + .../com/inspect/job/task/JobMainTask.java | 16 ++++- .../controller/PatrolTaskExecController.java | 72 +++++++++++++++++-- .../task/controller/PatrolTaskController.java | 49 +++++++++---- 4 files changed, 118 insertions(+), 22 deletions(-) diff --git a/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java b/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java index 009c016..195db0e 100644 --- a/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java +++ b/inspect-job/src/main/java/com/inspect/job/client/TaskExecClient.java @@ -110,6 +110,9 @@ public interface TaskExecClient { @PostMapping({"/exec/makeCurrentDayTask"}) Map> makeCurrentDayTask(); + @PostMapping({"/exec/execDeviceTask"}) + void execDeviceTask(@RequestBody List patrolTaskListEx); + @PostMapping({"/getPatrolTaskStatusByTaskPatrolledId"}) PatrolTaskStatus getPatrolTaskStatusByTaskPatrolledId(String patrolId); diff --git a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java index f9c3122..3062054 100644 --- a/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java +++ b/inspect-job/src/main/java/com/inspect/job/task/JobMainTask.java @@ -767,7 +767,7 @@ public class JobMainTask { TaskStateData taskStateData = new TaskStateData(); taskStateData.setType(StaEnum.RunState.getCode()); taskStateData.setReceiveCode(""); - taskStateData.setSendCode("手动点位"); + taskStateData.setSendCode("摄像头"); taskStateData.setTaskStateList(taskStates); Object patrolRunResult = JSONArray.toJSON(taskStateData); try { @@ -2021,13 +2021,27 @@ public class JobMainTask { List patrolTaskList = JSON.parseArray(redisService.getCacheObject(redisKey), PatrolTask.class); // 筛选出可见光任务 List patrolTaskListEx = new ArrayList<>(); + List patrolTaskControlList = new ArrayList<>(); for (PatrolTask patrolTask : patrolTaskList) { log.info("EXTRACT_REDIS_TASK devType: {}", patrolTask.getDevType()); if(StringUtils.isNotEmpty(patrolTask.getDevType()) && patrolTask.getDevType().contains("2")) { patrolTaskListEx.add(patrolTask); } + + if(StringUtils.isNotEmpty(patrolTask.getDevType()) + && (patrolTask.getDevType().contains("0") || patrolTask.getDevType().contains("1"))) { + patrolTaskControlList.add(patrolTask); + } } + + if (!patrolTaskControlList.isEmpty()) { + log.info(Color.YELLOW + "PATROL_TASK_LIST_DEVICE: {}, task list size: {}" + Color.END, redisKey, patrolTaskControlList.size()); + redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 5L, TimeUnit.MINUTES); + // 执行机器狗,无人机设备任务 + taskExecClient.execDeviceTask(patrolTaskControlList); + } + if (!patrolTaskListEx.isEmpty()) { log.info(Color.YELLOW + "PATROL_TASK_LIST_VL: {}, task list size: {}" + Color.END, redisKey, patrolTaskListEx.size()); redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, redisKey, 5L, TimeUnit.MINUTES); diff --git a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java index 01cbcd9..8fbe7ed 100644 --- a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java +++ b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java @@ -41,10 +41,13 @@ import com.inspect.patrol.service.IPatrolPresetActionService; import com.inspect.patrol.service.IPatrolPresetParamService; import com.inspect.patrol.service.IPatrolPresetPosService; import com.inspect.system.base.domain.SysDictData; +import com.inspect.system.base.openDomain.BasedataEqpBookMoMain; import com.inspect.task.domain.PatrolTask; +import com.inspect.task.domain.SendTask; import com.inspect.task.service.IPatrolTaskService; import com.inspect.taskinfo.domain.PatrolTaskInfo; import com.inspect.taskinfo.service.IPatrolTaskInfoService; +import com.inspect.taskstatus.client.FeignTaskClient; import com.inspect.taskstatus.domain.PatrolTaskStatus; import com.inspect.taskstatus.service.IPatrolTaskStatusService; @@ -52,6 +55,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.collections4.CollectionUtils; @@ -81,6 +85,9 @@ public class PatrolTaskExecController extends BaseController { private final IPatrolResultService patrolResultService; + @Resource + private FeignTaskClient feignTaskClient; + public PatrolTaskExecController(IPatrolTaskInfoService patrolTaskInfoService, IPatrolTaskService patrolTaskService, RedisService redisService, IPatrolTaskStatusService patrolTaskStatusService, IDBPatrolPointService dbPatrolPointService, IPatrolPresetPosService patrolPresetPosService, IPatrolPresetActionService patrolPresetActionService, IPatrolTaskExecRecordService patrolTaskExecRecordService, IPatrolTaskPointExecRecordService patrolTaskPointExecRecordService, IMaintainRegionService maintainRegionService, IPatrolPresetParamService patrolPresetParamService, ISilenceTaskPointExecRecordService silenceTaskPointExecRecordService, IEqpBookChannelService eqpBookChannelService, IPatrolResultService patrolResultService, IEqpBookService eqpBookService) { this.patrolTaskInfoService = patrolTaskInfoService; this.patrolTaskService = patrolTaskService; @@ -552,8 +559,8 @@ public class PatrolTaskExecController extends BaseController { // 按小时执行 int intervalNumber = task.getIntervalNumber(); if (intervalNumber > 0) { -// List exeTimes = getExecTimes(task.getIntervalExecuteTime(), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalStartTime()), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalEndTime()), intervalNumber); - List exeTimes = getExecTimesOld(task.getIntervalExecuteTime(), intervalNumber); + List exeTimes = getExecTimes(task.getIntervalExecuteTime(), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalStartTime()), DateUtils.format(DateUtils.yyyyMMddHHmmss2, task.getIntervalEndTime()), intervalNumber); +// List exeTimes = getExecTimesOld(task.getIntervalExecuteTime(), intervalNumber); for (Date exeTime : exeTimes) { logger.info("[TASK] {}, isInterTaskByHour exeTime: {}", task.getTaskCode(), DateUtils.format(DateUtils.yyyyMMddHHmmss2, exeTime)); task.setFixedStartTime(exeTime); @@ -608,9 +615,9 @@ public class PatrolTaskExecController extends BaseController { List devNoList = new ArrayList<>(); String[] devTypes = task.getDevType().split(StringUtils.COMMA); for (int i = 0; i < devTypes.length; ++i) { - if ("2".equals(devTypes[i])) { +// if ("2".equals(devTypes[i])) { devNoList.add(devNos[i]); - } +// } } if(devNoList.isEmpty()) { @@ -791,6 +798,57 @@ public class PatrolTaskExecController extends BaseController { // } } + @PostMapping({"/execDeviceTask"}) + private void execDeviceTask(@RequestBody List patrolTaskListEx) { + String sendCode = ""; + BasedataEqpBookMoMain basedataEqpBookMoMain = new BasedataEqpBookMoMain(); + basedataEqpBookMoMain.setType("20");// type:20 - robot + List basedataEqpBookMoMains = this.patrolResultService.selectBasedataEqpBookList(basedataEqpBookMoMain); + if (!basedataEqpBookMoMains.isEmpty()) { + sendCode = basedataEqpBookMoMains.get(0).getPatrolDeviceCode(); + } + for (PatrolTask patrolTask : patrolTaskListEx) { + if (StringUtils.isNotEmpty(patrolTask.getDevNo())) { + String[] devTypes = patrolTask.getDevType().split(StringUtils.COMMA); + String[] devNos = patrolTask.getDevNo().split(StringUtils.COMMA); + List pilotTaskCmds = new ArrayList<>(); + for (int i = 0; i < devNos.length; i++) { + log.info("execDeviceTask devNo: {}, devType: {}", devNos[i], devTypes[i]); + + BasedataEqpBookMoMain basedataEqpbookMomain = new BasedataEqpBookMoMain(); + basedataEqpbookMomain.setPatrolDeviceCode(devNos[i]); + List eqpBookMoMains = patrolResultService.selectBasedataEqpBookList(basedataEqpbookMomain); + String receiveCode = ""; + if (!eqpBookMoMains.isEmpty() && eqpBookMoMains.get(0).getMainSystemCode() != null) { + receiveCode = eqpBookMoMains.get(0).getMainSystemCode(); + } + if (StringUtils.isNotEmpty(receiveCode)) { + log.info("定时任务--无人机-机器人任务构建, receiveCode: {}, devType: {}, devNo: {}", receiveCode, patrolTask.getDevType(), patrolTask.getDevNo()); + SendTask sendTask = new SendTask(); + sendTask.setReceiveCode(receiveCode); + sendTask.setSendCode(sendCode); + sendTask.setCode(patrolTask.getTaskId() + ""); + sendTask.setType("41"); + sendTask.setCommand("1"); + String pilotTaskCmd = JSONObject.toJSONString(sendTask); + pilotTaskCmds.add(pilotTaskCmd); + } + } + + // 下发无人机-机器人任务 + for(String pilotTaskCmd : pilotTaskCmds) { + log.info("定时任务--无人机-机器人任务执行, pilotTaskCmd: {}", pilotTaskCmd); + try { + this.feignTaskClient.sendCommand(pilotTaskCmd); + } catch (Exception e) { + log.error("定时任务--无人机-机器人任务下发异常: {}", e.getMessage()); + } + } + } + } + } + + private void extracted(String key, String taskCode) { log.info(Color.RED + "[EXEC] Add new task [{}]" + Color.END, key);//日志里没搜到 redisService.setCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskCode, key, 5L, TimeUnit.MINUTES); @@ -815,9 +873,9 @@ public class PatrolTaskExecController extends BaseController { List devTypeList = new ArrayList<>(); List devNoList = new ArrayList<>(); for (int i = 0; i < devTypes.length; ++i) { - if (!"2".equals(devTypes[i])) { - continue; - } +// if (!"2".equals(devTypes[i])) { +// continue; +// } devTypeList.add(devTypes[i]); devNoList.add(devNos[i]); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java index d10c0b2..309269f 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/task/controller/PatrolTaskController.java @@ -707,6 +707,13 @@ public class PatrolTaskController extends BaseController { } } issueTask(patrolTask); + // 修改任务,删除原有的任务执行策略,根据新的策略重新生成 + if (StringUtils.isNotEmpty(patrolTask.getTaskCode())) { + Collection redisKeys = redisService.keys(RedisConst.TASK_CODE + patrolTask.getTaskCode() + StringUtils.AT + "*"); + for (String redisKey : redisKeys) { + redisService.deleteObject(redisKey); + } + } } return toAjax(a); } catch (Exception e) { @@ -1217,20 +1224,34 @@ public class PatrolTaskController extends BaseController { } private PatrolSendTask handleFixTypeTask(PatrolSendTask patrolSendTask) { - if (StringUtils.isNotEmpty(patrolSendTask.getFixedStartTime())) { - patrolSendTask.setCycleEndTime(""); - patrolSendTask.setCycleExecuteTime(""); - patrolSendTask.setCycleMonth(""); - patrolSendTask.setCycleStartTime(""); - patrolSendTask.setCycleWeek(""); - patrolSendTask.setIntervalEndTime(""); - patrolSendTask.setIntervalType(""); - patrolSendTask.setIntervalExecuteTime(""); - patrolSendTask.setIntervalNumber(""); - patrolSendTask.setIntervalStartTime(""); - patrolSendTask.setInvalidEndTime(""); - patrolSendTask.setInvalidStartTime(""); - } +// if (StringUtils.isNotEmpty(patrolSendTask.getFixedStartTime())) { +// patrolSendTask.setCycleEndTime(""); +// patrolSendTask.setCycleExecuteTime(""); +// patrolSendTask.setCycleMonth(""); +// patrolSendTask.setCycleStartTime(""); +// patrolSendTask.setCycleWeek(""); +// patrolSendTask.setIntervalEndTime(""); +// patrolSendTask.setIntervalType(""); +// patrolSendTask.setIntervalExecuteTime(""); +// patrolSendTask.setIntervalNumber(""); +// patrolSendTask.setIntervalStartTime(""); +// patrolSendTask.setInvalidEndTime(""); +// patrolSendTask.setInvalidStartTime(""); +// } + // 下发给机器狗,无人机普通任务 + patrolSendTask.setFixedStartTime(""); + patrolSendTask.setCycleEndTime(""); + patrolSendTask.setCycleExecuteTime(""); + patrolSendTask.setCycleMonth(""); + patrolSendTask.setCycleStartTime(""); + patrolSendTask.setCycleWeek(""); + patrolSendTask.setIntervalEndTime(""); + patrolSendTask.setIntervalType(""); + patrolSendTask.setIntervalExecuteTime(""); + patrolSendTask.setIntervalNumber(""); + patrolSendTask.setIntervalStartTime(""); + patrolSendTask.setInvalidEndTime(""); + patrolSendTask.setInvalidStartTime(""); return patrolSendTask; }