From c3e0e931b6ed682c5b62bb8e01973aa827ae5788 Mon Sep 17 00:00:00 2001 From: lijiuwei Date: Wed, 23 Apr 2025 16:51:22 +0800 Subject: [PATCH] Recover Timer --- .../base/core/constant/RedisConst.java | 1 + .../com/inspect/job/task/JobMainTask.java | 494 ++++++++++++++++++ .../controller/ResultAnalysisController.java | 4 +- .../controller/PatrolResultController.java | 18 +- .../PatrolTaskStatusController.java | 1 + 5 files changed, 507 insertions(+), 11 deletions(-) diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/RedisConst.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/RedisConst.java index de29786..9561e4e 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/RedisConst.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/RedisConst.java @@ -5,6 +5,7 @@ public class RedisConst { public static final String TASK_CODE = "TASK_CODE@";//已经和taskcode关联 public static final String REQUEST_UUID = "REQUEST_UUID@";//已经和uuid关联 + public static final String TASK_PATROL_ID_EX = "TASK+PATROL+ID@";//已经和taskcode关联 public static final String TASK_PATROL_ID = "TASK_PATROL_ID";//应该没用到 public static final String TASK_PATROL_STATE = "TASK_PATROL_STATE";//应该没用到 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 34bb262..da9990d 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 @@ -1115,4 +1115,498 @@ public class JobMainTask { PatrolTaskExecRecord record = taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolId); return record != null && TaskStatus.RUNNING.getCode().equals(record.getTaskState()); } + + + + + + @SuppressWarnings({"unused"}) + public void generalTask() { + log.info("***************************** JobTaskTimer generalTask *************************************"); + + if (shaoXinBigModel.isSwitchStatus()) { + log.info("[GABRIEL][BIG-MODEL] gathering temporary handling, need to close nacos bigSwitch"); + redisService.redisTemplate.opsForValue().set(this.BIG_FILE_POINT, -1); + } + + boolean isCycle = false; + boolean isInterval = false; + String[] cycleExecuteTime = new String[3]; + + String currentWeek = getWeekOfDate(new Date()); + Calendar now = Calendar.getInstance(); + int day = DateUtils.getDayInt(); + int hour = DateUtils.getHourInt(); + int minute = DateUtils.getMinuteInt(); + Date d = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try { + List patrolTaskList = taskExecClient.selectTaskList(PatrolTask.builder().isEnable(TASK_ENABLE).build()); + log.info(Color.GREEN + "[GABRIEL] {inspect-main} selectTaskList task count: {}" + Color.END, patrolTaskList.size()); + for (PatrolTask task : patrolTaskList) { + if (TASK_TYPE_SILENCE.equals(task.getType()) || TASK_TYPE_LINKAGE.equals(task.getType())) { + continue; + } + + List patrolTaskExecRecordList = + taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), Collections.singletonList(TaskStatus.RUNNING.getCode())); + if (!patrolTaskExecRecordList.isEmpty()) { + String time = ""; + String[] intervalExecuteTime; + if (isCycle) { + int i; + String[] cycleExecuteTimes; + String week; + if (StringUtils.isNotEmpty(task.getCycleMonth())) { + intervalExecuteTime = task.getCycleMonth().split(StringUtils.COMMA); + cycleExecuteTimes = task.getCycleMonth().split(StringUtils.COMMA); + + for (i = 0; i < intervalExecuteTime.length; ++i) { + week = intervalExecuteTime[i]; + time = cycleExecuteTimes[i].replaceAll(StringUtils.COLON, StringUtils.EMPTY); + if (day == Integer.parseInt(week) && task.getCycleExecuteTime() != null) { + redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); + } + } + } else if (StringUtils.isNotEmpty(task.getCycleWeek())) { + intervalExecuteTime = task.getCycleWeek().split(StringUtils.COMMA); + cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); + for (i = 0; i < intervalExecuteTime.length; ++i) { + week = intervalExecuteTime[i]; + time = cycleExecuteTimes[i].replaceAll(StringUtils.COLON, StringUtils.EMPTY); + if (currentWeek.equals(week)) { + redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); + } + } + } + } else if (isInterval) { + intervalExecuteTime = task.getIntervalExecuteTime().split(StringUtils.COLON); + int j; + if ("1".equals(task.getIntervalType())) { + for (j = 0; j < task.getIntervalNumber(); ++j) { + if (j != 0) { + intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); + } + + time = hour + minute + cycleExecuteTime[2]; + redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); + } + } else if ("2".equals(task.getIntervalType())) { + for (j = 0; j < task.getIntervalNumber(); ++j) { + if (j != 0) { + intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); + } + + redisService.setCacheObject(RedisConst.TASK_PATROL_ID_EX + task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d) + time, task); + } + } + } + } else { + long current = 0L; + long fixedStart = 1L; + patrolTaskExecRecordList = taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), Arrays.asList(TaskStatus.DONE.getCode(), TaskStatus.PAUSED.getCode())); + if (!patrolTaskExecRecordList.isEmpty()) { + PatrolTaskExecRecord patrolTaskExecRecord = patrolTaskExecRecordList.get(patrolTaskExecRecordList.size() - 1); + current = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis()); + fixedStart = TimeUnit.MILLISECONDS.toMinutes(patrolTaskExecRecord.getStartTime().getTime()); + } + + if (current != fixedStart) { + PatrolPresetPos patrolPresetPos = new PatrolPresetPos(); + PatrolPresetAction patrolPresetAction = new PatrolPresetAction(); + PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); + patrolTaskInfo.setTaskMajorId(String.valueOf(task.getTaskId())); + patrolTaskInfo.setDevNo(task.getDevNo()); + if (task.getFixedStartTime() != null + && ExecStatus.REGULAR.getCode().equals(task.getExecutionStatus())) { + isCycle = false; + isInterval = false; + long currentMinutes = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis()); + long fixedStartMinutes = TimeUnit.MILLISECONDS.toMinutes(task.getFixedStartTime().getTime()); + if (currentMinutes == fixedStartMinutes) { + try { + Thread.sleep(200L); + } catch (InterruptedException interruptedException) { + interruptedException.printStackTrace(); + } + + startThread(patrolTaskInfo, patrolPresetPos, patrolPresetAction, task); + } + } else { + String[] intervalExecuteTime; + if (StringUtils.isNotEmpty(task.getCycleExecuteTime()) + && task.getCycleStartTime() != null + && Integer.parseInt(sdf.format(d)) >= Integer.parseInt(sdf.format(task.getCycleStartTime())) + && Integer.parseInt(sdf.format(d)) <= Integer.parseInt(sdf.format(task.getCycleEndTime())) + && ExecStatus.PERIODIC.getCode().equals(task.getExecutionStatus())) { + isCycle = true; + isInterval = false; + int i; + String month; + String[] cycleExecuteTimes; + if (StringUtils.isNotEmpty(task.getCycleWeek())) { + intervalExecuteTime = task.getCycleWeek().split(StringUtils.COMMA); + cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); + for (i = 0; i < intervalExecuteTime.length; ++i) { + month = intervalExecuteTime[i]; + if (currentWeek.equals(month)) { + cycleExecuteTime = cycleExecuteTimes[i].split(StringUtils.COLON); + startThread(patrolTaskInfo, + patrolPresetPos, + patrolPresetAction, + hour, + minute, + task, + cycleExecuteTime, + true); + } + } + } else if (StringUtils.isNotEmpty(task.getCycleMonth())) { + intervalExecuteTime = task.getCycleMonth().split(StringUtils.COMMA); + cycleExecuteTimes = task.getCycleExecuteTime().split(StringUtils.COMMA); + for (i = 0; i < intervalExecuteTime.length; ++i) { + month = intervalExecuteTime[i]; + if (day == Integer.parseInt(month) && task.getCycleExecuteTime() != null) { + cycleExecuteTime = cycleExecuteTimes[i].split(StringUtils.COLON); + startThread(patrolTaskInfo, + patrolPresetPos, + patrolPresetAction, + hour, + minute, + task, + cycleExecuteTime, + true); + } + } + } + } else if (StringUtils.isNotEmpty(task.getIntervalExecuteTime()) + && task.getIntervalStartTime() != null + && Integer.parseInt(sdf.format(d)) >= Integer.parseInt(sdf.format(task.getIntervalStartTime())) + && Integer.parseInt(sdf.format(d)) <= Integer.parseInt(sdf.format(task.getIntervalEndTime())) + && ExecStatus.INTERVAL.getCode().equals(task.getExecutionStatus())) { + isCycle = false; + isInterval = true; + intervalExecuteTime = task.getIntervalExecuteTime().split(StringUtils.COLON); + if ("1".equals(task.getIntervalType())) { + for (int j = 0; j < task.getIntervalNumber(); ++j) { + if (j != 0) { + intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); + } + + startThread(patrolTaskInfo, patrolPresetPos, patrolPresetAction, hour, minute, task, intervalExecuteTime, false); + } + } else if ("2".equals(task.getIntervalType())) { + for (int j = 0; j < task.getIntervalNumber(); ++j) { + if (j != 0) { + intervalExecuteTime[0] = String.valueOf(Integer.parseInt(intervalExecuteTime[0]) + 1); + } + startThread(patrolTaskInfo, + patrolPresetPos, + patrolPresetAction, + hour, + minute, + task, + intervalExecuteTime, + false); + } + } + } + } + } + } + } + } catch (Exception e) { + if (e instanceof RetryableException) + log.warn(Color.YELLOW + "[GABRIEL] {inspect-main} selectTaskList is not online!" + Color.END); + else + e.printStackTrace(); + } + } + + @SuppressWarnings({"unused"}) + public void continueTask() { + log.info("***************************** JobTaskTimer continueTask *************************************"); + + try { + /** + * select from patrol_task_exec_record where task_state=2(running) + */ + List execRecords + = taskExecClient.selectAbeyancePatrolTaskExecRecordList(PatrolTaskExecRecord.builder().build()); + for (PatrolTaskExecRecord execRecord : execRecords) { + threadPool.submit(() -> { + final String deviceId = execRecord.getDeviceId(); + if (!StringUtils.isEmpty(deviceId)) { + log.info(Color.GREEN + "[JOB] RESUME devNo: {}, taskId: {}, deviceId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId(), deviceId); + prePointContinueExec(execRecord); + } + }); + } + } catch (Exception e) { + if (e instanceof RetryableException) { + log.warn(Color.YELLOW + "[GABRIEL] inspect-main is not online!" + Color.END); + } else { + log.warn(Color.YELLOW + "[GABRIEL] other exception!" + Color.END); + } + } + } + + private void prePointContinueExec(PatrolTaskExecRecord patrolTaskExecRecord) { + PatrolTaskInfo patrolTaskInfo = PatrolTaskInfo.builder() + .devNo(patrolTaskExecRecord.getDevNo()) + .taskMajorId(patrolTaskExecRecord.getTaskCode()) + .build(); + List patrolTaskInfoList = taskExecClient.selectTaskInfoList(patrolTaskInfo); + /** + * 从当前正在维修表maintain_region表中查询当前正在维修的点位, + * 并把这些点位排除出巡检任务 + */ + List patrolTaskInfoListTemp = patrolTaskInfoMaintainAreaRemove(patrolTaskInfoList); + boolean bContinue = false; + int size = patrolTaskInfoListTemp.size(); + /** + * 该任务下面的patrol_task_info中的设备点一个都没有执行(patrol_task_point_exec_record查不到任何该任务点的执行记录) + * 这种情况下当前点一定要执行prePointExec,否则就会遗漏该点 + */ + for (PatrolTaskInfo taskInfo : patrolTaskInfoListTemp) { + final String deviceIdOfInfo = taskInfo.getDeviceId(); + if (!bContinue) { + final String deviceIdOfRecord = patrolTaskExecRecord.getDeviceId(); + //log.info("[JOB] devId: {}, devId2: {}", deviceIdOfRecord, deviceIdOfInfo); + if (deviceIdOfInfo.equals(deviceIdOfRecord)) { + Long execPointId = patrolTaskExecRecord.getExecPointId(); + log.info("[JOB] TASK RESUMED, LOCK IT! {}", "POINT=" + execPointId + ", NAME=" + patrolTaskExecRecord.getTaskName() + ", ID=" + patrolTaskExecRecord.getTaskPatrolId()); + patrolTaskExecRecord.setDeviceId("-1"); + patrolTaskExecRecord.setExecPointId(-1L); + taskExecClient.updatePatrolTaskExecRecord(patrolTaskExecRecord); + bContinue = true; + /** + * 该任务下面的patrol_task_info中的设备点一个都没有执行(patrol_task_point_exec_record查不到任何该任务点的执行记录) + * 这种情况下当前点一定要执行prePointExec,否则就会遗漏该点 + */ + if (execPointId == 0L) { + prePointExec(patrolTaskExecRecord, taskInfo, size); + } + } + } else { + prePointExec(patrolTaskExecRecord, taskInfo, size); + } + } + } + + @SuppressWarnings({"unused"}) + public void silenceTask() { + log.info("***************************** JobTaskTimer silenceTask *************************************"); + + PatrolTask patrolTask = new PatrolTask(); + patrolTask.setType(TASK_TYPE_SILENCE); + patrolTask.setIsEnable(TASK_ENABLE); + Set noRunDevices = new HashSet(); + List patrolTaskList = taskExecClient.selectTaskList(patrolTask); + List taskStates = new ArrayList<>(); + taskStates.add(TASK_STATUS_RUN); + taskStates.add(TASK_STATUS_STOP); + Iterator iterator = patrolTaskList.iterator(); + while (iterator.hasNext()) { + PatrolTask task = iterator.next(); + List patrolTaskExecRecordList = taskExecClient.selectCameraPatrolTaskExecRecordList(task.getDevNo(), taskStates); + String key = REDIS_TASK_SILENCE_DEVICE + task.getDevNo(); + if (patrolTaskExecRecordList.isEmpty()) { + if (!redisService.hasKey(key)) { + log.info("[GABRIEL] key1: {}", key); + redisService.setCacheObject(key, new Date()); + } else { + Date deviceStopTime = this.redisService.getCacheObject(key); + if (CalendarUtil.expire(deviceStopTime, task.getIntervalNumber())) { + redisService.deleteObject(key); + this.log.info("silenceTask 静默任务开始执行 任务编号 :{}", task.getTaskCode()); + PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); + patrolTaskInfo.setTaskMajorId(task.getTaskId().toString()); + patrolTaskInfo.setDevNo(task.getDevNo()); + this.startThread(patrolTaskInfo, new PatrolPresetPos(), new PatrolPresetAction(), task); + } + } + } else if (!TASK_TYPE_SILENCE.equals((patrolTaskExecRecordList.get(0)).getTaskType())) { + noRunDevices.add(task.getDevNo()); + } + } + + if (!noRunDevices.isEmpty()) { + noRunDevices.forEach((devNo) -> { + redisService.deleteObject(REDIS_TASK_SILENCE_DEVICE + devNo); + }); + } + } + + @SuppressWarnings({"unused"}) + public void linkageTask() { + log.info("***************************** JobTaskTimer linkageTask *************************************"); + + PatrolTask patrolTask = new PatrolTask(); + patrolTask.setType(TASK_TYPE_LINKAGE); + patrolTask.setLinkageState("1"); + PatrolTaskInfo patrolTaskInfo = new PatrolTaskInfo(); + PatrolPresetPos patrolPresetPos = new PatrolPresetPos(); + PatrolPresetAction patrolPresetAction = new PatrolPresetAction(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + List patrolTaskList = taskExecClient.selectTaskList(patrolTask); + for (PatrolTask task : patrolTaskList) { + Date d = new Date(); + PatrolTaskExecRecord patrolTaskExecRecord = new PatrolTaskExecRecord(); + patrolTaskExecRecord.setTaskPatrolId(task.getDevNo() + "_" + task.getTaskCode() + "_" + sdf.format(d)); + patrolTaskExecRecord.setOldTaskPatrolId(task.getTaskCode() + "_" + sdf.format(d)); + patrolTaskExecRecord.setTaskName(task.getTaskName()); + patrolTaskExecRecord.setTaskCode(task.getTaskCode()); + patrolTaskExecRecord.setTaskState(TASK_STATUS_RUN); + patrolTaskExecRecord.setPlanStartTime(task.getCycleStartTime()); + patrolTaskExecRecord.setStartTime(new Date()); + patrolTaskExecRecord.setTaskProgress(""); + patrolTaskExecRecord.setEndTime(task.getCycleEndTime()); + patrolTaskExecRecord.setDescription(""); + patrolTaskExecRecord.setDevNo(task.getDevNo()); + patrolTaskExecRecord.setTaskType(task.getType()); + patrolTaskExecRecord.setTaskPriority(task.getPriority()); + patrolTaskExecRecord.setTaskId(task.getTaskId()); + patrolTaskExecRecord.setStationName(task.getStationName()); + patrolTaskExecRecord.setStationCode(task.getStationCode()); + log.info("linkageTask 联动任务执行 任务编号 :{}", task.getTaskCode()); + taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); + log.info("添加 联动任务执行 主表信息 完成 :{}", "任务执行id TaskPatrolledId :" + patrolTaskExecRecord.getTaskPatrolId()); + patrolTaskInfo.setTaskMajorId(task.getTaskId().toString()); + patrolTaskInfo.setDevNo(task.getDevNo()); + List patrolTaskInfoList = taskExecClient.selectTaskInfoList(patrolTaskInfo); + linkagePrePointExceControl(patrolTaskExecRecord, patrolPresetPos, patrolPresetAction, patrolTaskInfoList); + task.setLinkageState("2"); + taskExecClient.updatePatrolTask(task); + } + } + + private void linkagePrePointExceControl(PatrolTaskExecRecord patrolTaskExecRecord, PatrolPresetPos patrolPresetPos, PatrolPresetAction patrolPresetAction, List patrolTaskInfoList) { + PatrolTaskExecRecord taskExecRecord = this.taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolTaskExecRecord.getTaskPatrolId()); + if (taskExecRecord != null && TASK_STATUS_RUN.equals(taskExecRecord.getTaskState())) { + boolean continueExce = true; + int patrolTaskInfoListSize = patrolTaskInfoList.size(); + + for (int ii = 0; ii < patrolTaskInfoListSize; ++ii) { + PatrolTaskInfo taskInfo = patrolTaskInfoList.get(ii); + taskExecRecord = this.taskExecClient.selectPatrolTaskExecRecordByTaskPatrolId(patrolTaskExecRecord.getTaskPatrolId()); + if (taskExecRecord != null && (TASK_STATUS_STOP.equals(taskExecRecord.getTaskState()) || "4".equals(taskExecRecord.getTaskState()))) { + continueExce = false; + } + + log.info("联动任务执行预置位 信息 :{}", "DeviceId :" + taskInfo.getDeviceId() + ",DevNo:" + taskInfo.getDevNo()); + prePointExec(taskExecRecord, taskInfo, patrolTaskInfoListSize); + } + } + } + + @SuppressWarnings({"unused"}) + public void makeEveryDayTask() { + log.info("***************************** JobTaskTimer makeEveryDayTask *************************************"); + + try { + taskExecClient.makeCurrentDayTask(); + } catch (Exception e) { + log.info("[JOB] makeCurrentDayTask: {}", e.getMessage()); + } + } + +// private String getTaskPatrolId(final PatrolTask patrolTask) { +// String time = DateUtils.format(DateUtils.yyyyMMddHHmmss, patrolTask.getFixedStartTime()); +// return patrolTask.getDevNo() + "_" + patrolTask.getTaskCode() + "_" + time; +// } +// +// private String getOldTaskPatrolId(final PatrolTask patrolTask) { +// String time = DateUtils.format(DateUtils.yyyyMMddHHmmss, patrolTask.getFixedStartTime()); +// return patrolTask.getTaskCode() + "_" + time + "_" + time; +// } + + @SuppressWarnings({"unused"}) + public void execEveryDayTask(List patrolTaskList) { + log.info("***************************** JobTaskTimer execEveryDayTask *************************************"); + +// setRedisRecordCount(patrolTaskList.size()); +// for (PatrolTask patrolTask : patrolTaskList) { +// List taskInfos = getInfosByRecord(PatrolTaskExecRecord.builder().devNo(patrolTask.getDevNo()).taskId(patrolTask.getTaskId()).build()); +// final String taskPatrolId = getTaskPatrolId(patrolTask); +// final String oldTaskPatrolId = getOldTaskPatrolId(patrolTask); +// log.info(Color.GREEN + "[JOB] NEW EXEC RECORD: {}, OLD: {}" + Color.END, taskPatrolId, oldTaskPatrolId); +// PatrolTaskExecRecord patrolTaskExecRecord = PatrolTaskExecRecord.builder() +// .taskPatrolId(taskPatrolId) +// .oldTaskPatrolId(oldTaskPatrolId) +// .taskName(patrolTask.getTaskName()) +// .taskCode(patrolTask.getTaskCode()) +// .taskState(TaskStatus.RUNNING.getCode()) +// .planStartTime(patrolTask.getCycleStartTime()) +// .startTime(new Date()) +// .taskProgress("0") +// .endTime(patrolTask.getCycleEndTime()) +// .description("") +// .devNo(patrolTask.getDevNo()) +// .taskType(patrolTask.getType()) +// .taskPriority(patrolTask.getPriority()) +// .taskId(patrolTask.getTaskId()) +// .stationName(patrolTask.getStationName()) +// .stationCode(patrolTask.getStationCode()) +// .deviceId("0") +// .execPointId(0L) +// .totalNumber(taskInfos.isEmpty() ? 1 : taskInfos.size()) +// .build(); +// try { +// taskExecClient.addPatrolTaskExecRecord(patrolTaskExecRecord); +// taskExecClient.updatePatrolTaskStatus(patrolTask); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// threadPool.submit(() -> { +// log.info(Color.MAGENTA + "[JOB] THREAD START devNo: {}, taskId: {}" + Color.END, patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); +// prePointExecImmediate(patrolTaskExecRecord); +// log.info(Color.MAGENTA + "[JOB] THREAD END devNo: {}, taskId: {}" + Color.END, patrolTaskExecRecord.getDevNo(), patrolTaskExecRecord.getTaskId()); +// }); +// } + } + +// private void incrementRedisRecordCounter() { +// Integer redisRecCnt = redisService.getCacheObject(RedisConst.TASK_RECORD_CNT); +// if (redisRecCnt == null) { +// redisRecCnt = 1; +// redisService.setCacheObject(RedisConst.TASK_RECORD_CNT, redisRecCnt); +// } else { +// redisRecCnt++; +// redisService.setCacheObject(RedisConst.TASK_RECORD_CNT, redisRecCnt); +// } +// +// log.info(Color.GREEN + "[JOB] redisRecCnt: {}" + Color.END, redisRecCnt); +// } + + @SuppressWarnings({"unused"}) + public void execRepeatDayTask(List patrolTaskList) { + log.info("***************************** JobTaskTimer execRepeatDayTask *************************************"); + +// for (PatrolTask patrolTask : patrolTaskList) { +// final String taskPatrolId = getTaskPatrolId(patrolTask); +// final String oldTaskPatrolId = getOldTaskPatrolId(patrolTask); +// log.info(Color.GREEN + "[JOB] REPEAT EXEC RECORD: {}, OLD: {}" + Color.END, taskPatrolId, oldTaskPatrolId); +// List taskExecRecords = +// taskExecClient.selectPatrolTaskExecRecordList(PatrolTaskExecRecord.builder() +// .taskPatrolId(taskPatrolId) +// .oldTaskPatrolId(oldTaskPatrolId) +// .build()); +// if (taskExecRecords.isEmpty()) continue; +// +// PatrolTaskExecRecord execRecord = taskExecRecords.get(0);//理论上来说只能有一条 +// int finish = execRecord.getFinishNumber(); +// int total = execRecord.getTotalNumber(); +// int times = execRecord.getRebootTimes(); +// if (finish < total) { +// log.info(Color.GREEN + "[JOB] REPEAT EXEC RECORD: id: {}, finish: {}, total: {}, times: {}, progress: {}" + Color.END, execRecord.getTaskPatrolId(), finish, total, times, execRecord.getTaskProgress()); +// incrementRedisRecordCounter(); +// threadPool.submit(() -> { +// log.info(Color.MAGENTA + "[JOB] REPEAT START devNo: {}, taskId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId()); +// prePointExecImmediate(execRecord); +// log.info(Color.MAGENTA + "[JOB] REPEAT END devNo: {}, taskId: {}" + Color.END, execRecord.getDevNo(), execRecord.getTaskId()); +// }); +// } +// } + } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java index 3479b47..4f1b6e8 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/controller/ResultAnalysisController.java @@ -403,9 +403,9 @@ public class ResultAnalysisController extends BaseController { analysis.setResStatus(patrolTaskInfo.getStatus()); analysis.setSuggestion(patrolTaskInfo.getSuggestion()); if ("1".equals(patrolTaskInfo.getStatus())) { - analysis.setResultType("0"); + analysis.setResultType("0");//告警 } else if ("2".equals(patrolTaskInfo.getStatus())) { - analysis.setResultType("1"); + analysis.setResultType("1");//结果正常 } resultAnalysisService.updateResultAnalysis(analysis); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index 1ddb097..2f8ee61 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -700,8 +700,8 @@ public class PatrolResultController extends BaseController { PatrolTaskFtp ftp = patrolTaskFtpService.selectPatrolTaskFtpByLineId(2L); String ANALYSIS_URL = patrolTaskService.selectConfigByKey("ANALYSIS_URL"); String BIG_ANALYSIS_URL = patrolTaskService.selectConfigByKey("BIG_ANALYSIS_URL"); - String MAJOR_URL = patrolTaskService.selectConfigByKey("MAJOR_URL"); - String TASK_PORT = patrolTaskService.selectConfigByKey("TASK_PORT"); + String MAJOR_URL = patrolTaskService.selectConfigByKey("MAJOR_URL");//requestHostIp 分析结果反馈ip地址 + String TASK_PORT = patrolTaskService.selectConfigByKey("TASK_PORT");//requestHostPort 分析结果反馈端口 logger.info("callRemoteAlgorithm ftpInfo: {}, ANALYSIS_URL: {}, BIG_ANALYSIS_URL: {}, MAJOR_URL: {}, TASK_PORT: {}", ftp, ANALYSIS_URL, BIG_ANALYSIS_URL, MAJOR_URL, TASK_PORT); @@ -709,9 +709,9 @@ public class PatrolResultController extends BaseController { String ids = ""; for (PatrolResult patrolResult : patrolResultList) { - List filterList = new ArrayList<>(); //初筛 - List bigModelList = new ArrayList<>(); //大模型 - List infraredList = new ArrayList<>();//红外 根据最新做法,红外要归到大模型里面,由大模型来调用(需要调整如下逻辑)-20250423 + List filterList = new ArrayList<>(); //初筛算法列表 + List bigModelList = new ArrayList<>(); //大模型算法列表 + List infraredList = new ArrayList<>();//红外摄像机算法列表 根据最新做法,红外要归到大模型里面,由大模型来调用(需要调整如下逻辑)-20250423 String image = patrolResult.getFilePath().replace(ftp.getFtpPath() + "/", StringUtils.EMPTY); String imageType = patrolResult.getFileType(); AnalyseReqItem analyseReqItem = new AnalyseReqItem(); @@ -800,13 +800,13 @@ public class PatrolResultController extends BaseController { } Map judgeMap = resultAnalysisService.selectPointInfoById(patrolResult.getDeviceId()); - logger.info("callRemoteAlgorithm judgeMap: {}", judgeMap.toString()); + logger.info("callRemoteAlgorithm judgeMap: {}", judgeMap.toString());//basedata_patrolpoint field->value map String filePanpath = ""; - if (StringUtils.isNotEmpty(judgeMap.get("dis_ref_picture_path"))) { + if (StringUtils.isNotEmpty(judgeMap.get("dis_ref_picture_path"))) {//basedata_patrolpoint里该字段的意思是判别基准图片路径 filePanpath = judgeMap.get("dis_ref_picture_path"); } - analyseReqItem.setImageNormalUrlPath(filePanpath); + analyseReqItem.setImageNormalUrlPath(filePanpath);//总是为空 List judgeList = algInfoList.stream().filter((item) -> { return item.getAlgName().contains("判别"); }).collect(Collectors.toList()); @@ -849,7 +849,7 @@ public class PatrolResultController extends BaseController { } } - logger.info("callRemoteAlgorithm infraredList.isEmpty(): {}", infraredList.isEmpty()); + logger.info("callRemoteAlgorithm infraredList.isEmpty(): {}", infraredList.isEmpty());//永远为true if (!infraredList.isEmpty() && "true".equals(pictureFrame)) { String uuid = UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); redisService.setCacheObject(RedisConst.REQUEST_UUID + uuid, patrolResultList.get(0).getTaskPatrolledId(), 1L, TimeUnit.DAYS); diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java index f67847a..8884bb6 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java @@ -609,6 +609,7 @@ public class PatrolTaskStatusController extends BaseController { } + //有何作用? private void extracted(PatrolTask patrolTask) throws InterruptedException { Thread.sleep(20000L); String taskCode = redisService.getCacheObjectOfTask(RedisConst.TASK_CURRENT_CODE, String.valueOf(patrolTask.getTaskId()));