From 06787c647c2cbe228e95f13919aed69e74870462 Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Wed, 7 Jan 2026 11:26:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=8D=8E=E8=BD=AF?= =?UTF-8?q?=E6=97=A0=E4=BA=BA=E6=9C=BA=E8=A1=A8=E8=AE=A1=E7=AE=97=E6=B3=95?= =?UTF-8?q?gis=5Fmeter2=E8=B0=83=E7=94=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/core/constant/AlgConstants.java | 1 + .../analysis/constant/AnalyseConstants.java | 1 + .../service/TaskCalendarGenerator.java | 29 +++++++++++-- .../controller/PatrolResultController.java | 4 +- .../service/AnalyseRequestServiceImpl.java | 41 +++++++++++++++---- 5 files changed, 62 insertions(+), 14 deletions(-) diff --git a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java index 3fa85a6..1b2377d 100644 --- a/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java +++ b/inspect-base/inspect-base-core/src/main/java/com/inspect/base/core/constant/AlgConstants.java @@ -2,6 +2,7 @@ package com.inspect.base.core.constant; public class AlgConstants { public static final String METER = "meter"; + public static final String GIS_METER_2 = "gis_meter2"; public static final String INFRA_1800 = "infra_1800"; public static final String INFRA_YU3 = "infra_yu3"; public static final String INFRA_CAMERA = "infra_camera"; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java index debb43f..bafac24 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java @@ -39,6 +39,7 @@ public class AnalyseConstants { public static final String ANALYSIS_BIG_URL = "ANALYSIS_BIG_URL"; public static final String ANALYSIS_BIG_URL_INFRARED = "ANALYSIS_BIG_URL_INFRARED"; public static final String ANALYSIS_BIG_URL_METER = "ANALYSIS_BIG_URL_METER"; + public static final String ANALYSIS_BIG_URL_GIS_METER_2 = "ANALYSIS_BIG_URL_GIS_METER_2"; public static final String MAX_NUM = "MAX_NUM"; public static final String ANALYSE_LOG_TYPE_SEND = "0"; diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java index 4808c7e..f93193d 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java @@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** - * 未来任务生成器 + * 任务执行日历处理器 */ @Service @Slf4j @@ -43,7 +43,9 @@ public class TaskCalendarGenerator { @Resource private PatrolTaskStatusMapper patrolTaskStatusMapper; - // 定时任务:每天凌晨或任务变更后主动刷新缓存 + /** + * 定时任务:每天凌晨或任务变更后主动刷新缓存 + */ @Scheduled(cron = "0 50 0 * * ?") public void refreshCalendarCache() { log.info("[任务执行日历]定时刷新未来任务日历缓存"); @@ -59,6 +61,12 @@ public class TaskCalendarGenerator { futureCalendarCache.invalidateAll(); } + /** + * 获取指定年的任务统计信息(已执行、执行中、未执行) + * + * @param year + * @return + */ public List getMonthlyStatsByYear(int year) { List existingStats = patrolTaskStatusMapper.countMonthlyStatsByYear(year); // 获取未来预生成的计划任务(缓存) @@ -102,10 +110,25 @@ public class TaskCalendarGenerator { return existingStats; } + /** + * 获取指定年月的完整日历,包含已生成的任务和未来生成的任务 + * + * @param year 年 + * @param month 月 + * @return 日历列表 + */ public List getFullCalendar(int year, int month) { return getFullCalendar(year, month, 0); } + /** + * 获取指定年月日的完整日历,包含已生成的任务和未来生成的任务 + * + * @param year 年 + * @param month 月 + * @param day 日 + * @return + */ public List getFullCalendar(int year, int month, int day) { List existingList; if (day == 0) { @@ -139,7 +162,7 @@ public class TaskCalendarGenerator { // 将未来计划任务添加到当前日期的任务列表中(如果该任务尚未存在) for (DailyTaskStatsDTO futureTask : futureTasks) { if (date.equals(currentDate)) { - // 获取 startTime 最晚的任务 + // 检查在当前时间之前的任务舍弃不添加 if (currentTime.isBefore(futureTask.getStartTime())) { existingTasks.add(futureTask); } 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 806405b..407f585 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 @@ -1160,8 +1160,8 @@ public class PatrolResultController extends BaseController { logger.info("GET_INFO_41 ROBOT_TASK_STATUS patrolTaskStatusList: {}", patrolTaskStatusList); if (!patrolTaskStatusList.isEmpty()) { PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0); - // 除了上报完成状态,当db状态与上报状态不一致时,更新db状态 - if(!patrolTaskStatusItem.getTaskState().equals(TaskStatus.DONE.getCode()) && !patrolTaskStatusOfDb.getTaskState().equals(patrolTaskStatusItem.getTaskState())) { + // 除了完成和终止状态,当db状态与上报状态不一致时,更新db状态 + if(!Arrays.asList(TaskStatus.DONE, TaskStatus.HALTED).contains(patrolTaskStatusItem.getTaskState()) && !patrolTaskStatusOfDb.getTaskState().equals(patrolTaskStatusItem.getTaskState())) { logger.info("GET_INFO_41 UPDATE TASK_STATE old: {} TO new: {}", patrolTaskStatusOfDb.getTaskState(), patrolTaskStatusItem.getTaskState()); patrolTaskStatusOfDb.setTaskState(patrolTaskStatusItem.getTaskState()); // 如果上报状态为终止或超期限制状态时,需更新终止时间 diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRequestServiceImpl.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRequestServiceImpl.java index aa8c144..1c2a5cf 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRequestServiceImpl.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/service/AnalyseRequestServiceImpl.java @@ -46,6 +46,9 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { private static final Set METER_TYPES = new HashSet<>(Arrays.asList( AlgConstants.METER )); + private static final Set GIS_METER_TYPES = new HashSet<>(Arrays.asList( + AlgConstants.GIS_METER_2 + )); @Resource private RedisService redisService; @Value("${task.test-mode:false}") @@ -115,6 +118,18 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { return false; } + public static boolean checkGisMeter2Type(String[] typeList) { + if (typeList == null) { + return false; + } + for (String type : typeList) { + if (GIS_METER_TYPES.contains(type)) { + return true; + } + } + return false; + } + public static void main(String[] args) { try { ObjectMapper mapper = new ObjectMapper(); @@ -142,7 +157,7 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { analyseReq.getRequestId() : UUID.randomUUID().toString().trim().replaceAll(StringUtils.DASH, StringUtils.EMPTY); String taskPatrolId = analyseReq.getTaskPatrolId(); redisService.setCacheObject(RedisConst.REQUEST_UUID + requestId, taskPatrolId, requestTimeout, TimeUnit.DAYS); - //log.info("CALL_REMOTE_ANALYZE isFilter: {}, requestId: {}, taskPatrolId: {}", isFilter, requestId, taskPatrolId); + log.info("CALL_REMOTE_ANALYZE isFilter: {}, requestId: {}, typeList: {}", isFilter, requestId, typeList); analyseReq.setRequestId(requestId); String taskSetKey = AnalyseConstants.ANALYSE_TASK_REQUEST + taskPatrolId; @@ -191,6 +206,10 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { log.info("ANALYSE_FILTER_URL requestId: {}, requestUrl: {}", requestId, requestUrl); } + // 初筛读取无机人图片XMP位姿信息 + if (droneXmpEnabled) { + readDroneImageXmpInfo(analyseReq); + } } else { // 不再使用这个redis键值 // analyseReq.getObjectList().forEach((item) -> { @@ -199,14 +218,23 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { // redisService.redisTemplate.opsForSet().add(requestSetKey, item.toResultValue(type)); // } // }); - + // 红外分析路径 if (checkInfraredType(typeList)) { requestUrl = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSIS_BIG_URL_INFRARED); log.info("ANALYSIS_BIG_URL_INFRARED requestId: {}, requestUrl: {}", requestId, requestUrl); - } else if (checkMeterType(typeList)) { + } + // 表计读数分析路径 + else if (checkMeterType(typeList)) { requestUrl = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSIS_BIG_URL_METER); log.info("ANALYSIS_BIG_URL_METER requestId: {}, requestUrl: {}", requestId, requestUrl); - } else { + } + // 无人机gis_meter2读数分析路径 + else if (checkGisMeter2Type(typeList)) { + requestUrl = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSIS_BIG_URL_GIS_METER_2); + log.info("ANALYSIS_BIG_URL_GIS_METER_2 requestId: {}, requestUrl: {}", requestId, requestUrl); + } + // 默认大模型分析路径 + else { requestUrl = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSIS_BIG_URL); log.info("DEFAULT ANALYSIS_BIG_URL requestId: {}, requestUrl: {}", requestId, requestUrl); } @@ -233,11 +261,6 @@ public class AnalyseRequestServiceImpl implements IAnalyseRequestService { delayQueueService.submitRequest(AnalyseConstants.ALGORITHM_REQUEST_DELAY_QUEUE, analyseReq.getRequestId(), requestTimeout, TimeUnit.DAYS); } - // 读取无机人图片XMP位姿信息 - if (droneXmpEnabled) { - readDroneImageXmpInfo(analyseReq); - } - if (retryDelegate.callRemoteAnalyseService(analyseReq)) { log.info("CALL_REMOTE_ANALYSE SUCCESS, taskPatrolId: {}, requestId: {}", analyseReq.getTaskPatrolId(),