From 6b02f168399b53e67f009b200815804e291fabfd Mon Sep 17 00:00:00 2001 From: htjcAdmin Date: Mon, 25 Aug 2025 11:35:25 +0800 Subject: [PATCH] =?UTF-8?q?/*=E6=97=A0=E4=BA=BA=E6=9C=BA=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E7=8B=97=E4=BB=BB=E5=8A=A1=E8=BF=9B=E5=BA=A6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?bug=E4=BF=AE=E6=94=B9*/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inspect/job/task/JobMainTask.java | 4 + .../controller/PatrolResultController.java | 144 ++++++++++-------- .../metadata/config/SwaggerConfig.java | 21 +++ 3 files changed, 106 insertions(+), 63 deletions(-) create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/config/SwaggerConfig.java 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 d5ac566..fa65dcd 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 @@ -48,6 +48,7 @@ import java.util.concurrent.locks.ReentrantLock; import feign.RetryableException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; @@ -143,6 +144,9 @@ public class JobMainTask { // 用于状态查询线程 private final ScheduledExecutorService statusUpdater = Executors.newSingleThreadScheduledExecutor(); + @Resource + private RabbitTemplate rabbitTemplate; + @Autowired public JobMainTask( ShaoXinBigModel shaoXinBigModel, 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 5e81266..ba718fe 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 @@ -1114,8 +1114,8 @@ public class PatrolResultController extends BaseController { for (PatrolTaskStatus patrolTaskStatusItem : patrolTaskStatusListItems) { PatrolTask patrolTask = new PatrolTask(); patrolTask.setTaskCode(patrolTaskStatusItem.getTaskCode()); - List list = patrolTaskService.selectPatrolTaskList(patrolTask); - if (StringUtils.isEmpty(patrolTaskStatusItem.getTaskCode()) || CollectionUtils.isEmpty(list)) { + List patrolTaskListOfDb = patrolTaskService.selectPatrolTaskList(patrolTask); + if (CollectionUtils.isEmpty(patrolTaskListOfDb)) { logger.info("TASK CODE: {} NO EXIST, SKIP IT!", patrolTaskStatusItem.getTaskCode()); } else { try { @@ -1125,6 +1125,7 @@ public class PatrolResultController extends BaseController { } if (StringUtils.isNotEmpty(patrolTaskStatusItem.getTaskPatrolledId())) { + String str = ""; PatrolTaskStatus patrolTaskStatus = new PatrolTaskStatus(); patrolTaskStatus.setTaskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()); @@ -1134,14 +1135,12 @@ public class PatrolResultController extends BaseController { } else if (StringUtils.isNotEmpty(sendCode)) { str = sendCodeToDevType(sendCode); patrolTaskStatus.setPosType(str); - // 鲁人机器人 if ("1".equals(str) && "E100-001".equals(sendCode)) { List listEqpBook = baseDataClient.queryEqpBookCode(sendCode); patrolTaskStatusItem.setCode(listEqpBook.get(0).getChannelCode()); } } List patrolTaskStatusList = iPatrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus); - // 任务状态完成,终止,超过期限 if (patrolTaskStatusItem.getTaskState() != null && (patrolTaskStatusItem.getTaskState().equals(TaskStatus.DONE.getCode()) || patrolTaskStatusItem.getTaskState().equals(TaskStatus.HALTED.getCode()) @@ -1150,59 +1149,76 @@ public class PatrolResultController extends BaseController { patrolTaskStatusItem.setEndTime(DateUtils.parseDateToStr(DateUtils.yyyyMMddHHmmss2, new Date())); } if (!patrolTaskStatusList.isEmpty()) { - patrolTaskStatusItem.setLineId(patrolTaskStatusList.get(0).getLineId()); - - if (patrolTaskStatusItem.getTaskName().contains("联合") && !patrolTaskStatusItem.getTaskName().startsWith(sendCode)) { - patrolTaskStatusItem.setTaskName(sendCode + "-" + patrolTaskStatusItem.getTaskName()); + PatrolTaskStatus patrolTaskStatusOfDb = patrolTaskStatusList.get(0); + double runProgress = 0.0; + double dbProgress = 0.0; + try { + runProgress = Double.parseDouble(patrolTaskStatusItem.getTaskProgress()); + dbProgress = Double.parseDouble(patrolTaskStatusOfDb.getTaskProgress()); + } catch (Exception e) { + logger.error("patrol_task_status error number, run_progress: {}, db_progress: {}", patrolTaskStatusItem.getTaskProgress(), patrolTaskStatusOfDb.getTaskProgress()); } - logger.info(Color.CYAN + "updating patrol_task_status taskPatrolledId: {}, progress: {}, taskState: {}" + Color.END, - patrolTaskStatusItem.getTaskPatrolledId(), patrolTaskStatusItem.getTaskProgress(), patrolTaskStatusItem.getTaskState()); - - /* - * 智能巡视任务下发完成100%, 在这个节点不能更新task_state字段, 原因如下: - * 1. 不能更新task_state为已经完成状态, 因为整个任务的完成状态应该由算法任务是否完成来决定; - * 2. 不能更新task_state为正在执行状态, 因为在测试环境下发现智巡任务比算法任务达到100进度还要晚, - * 因此原本算法任务已经将状态置为已经完成的情况下为了防止智巡任务再把它改为执行中,所以此时只需要 - * 更新智巡的进度值为100即可 - */ - if("100.0".equals(patrolTaskStatusItem.getTaskProgress()) - && TaskStatus.RUNNING.getCode().equals(patrolTaskStatusItem.getTaskState())) { - List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); - if(!statusList.isEmpty()) { - logger.info(Color.CYAN + "updating patrol_task_status 100%, taskPatrolledId: {}, progress: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END, - patrolTaskStatusItem.getTaskPatrolledId(), - patrolTaskStatusItem.getTaskProgress(), - patrolTaskStatusItem.getTaskState(), - RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode()); - PatrolTaskStatus taskStatus = statusList.get(0); - taskStatus.setTaskProgress(patrolTaskStatusItem.getTaskProgress()); - iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskProgress(taskStatus); - redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskStatus.getTaskCode()); + + logger.info("patrol_task_status run_progress: {}, db_progress: {}", runProgress, dbProgress); + if(runProgress > dbProgress) { + patrolTaskStatusItem.setLineId(patrolTaskStatusOfDb.getLineId()); + if (patrolTaskStatusItem.getTaskName().contains("联合") && !patrolTaskStatusItem.getTaskName().startsWith(sendCode)) { + patrolTaskStatusItem.setTaskName(sendCode + "-" + patrolTaskStatusItem.getTaskName()); } - } else { - List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); - if(!statusList.isEmpty()) { - PatrolTaskStatus taskStatus = statusList.get(0); - if(TaskStatus.RUNNING.getCode().equals(taskStatus.getTaskState())) { - logger.info(Color.CYAN + "updating patrol_task_status state, taskPatrolledId: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END, + logger.info(Color.CYAN + "updating patrol_task_status taskPatrolledId: {}, progress: {}, taskState: {}" + Color.END, + patrolTaskStatusItem.getTaskPatrolledId(), patrolTaskStatusItem.getTaskProgress(), patrolTaskStatusItem.getTaskState()); + + /* + * 智能巡视任务下发完成100%, 在这个节点不能更新task_state字段, 原因如下: + * 1. 不能更新task_state为已经完成状态, 因为整个任务的完成状态应该由算法任务是否完成来决定; + * 2. 不能更新task_state为正在执行状态, 因为在测试环境下发现智巡任务比算法任务达到100进度还要晚, + * 因此原本算法任务已经将状态置为已经完成的情况下为了防止智巡任务再把它改为执行中,所以此时只需要 + * 更新智巡的进度值为100即可 + */ + if ("100.0".equals(patrolTaskStatusItem.getTaskProgress()) + && TaskStatus.RUNNING.getCode().equals(patrolTaskStatusItem.getTaskState())) { + List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); + if (!statusList.isEmpty()) { + logger.info(Color.CYAN + "updating patrol_task_status 100%, taskPatrolledId: {}, progress: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END, patrolTaskStatusItem.getTaskPatrolledId(), patrolTaskStatusItem.getTaskProgress(), patrolTaskStatusItem.getTaskState(), RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode()); - patrolTaskStatusItem.setTaskState(TaskStatus.RUNNING.getCode()); - i = iPatrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatusItem); + PatrolTaskStatus taskStatus = statusList.get(0); + taskStatus.setTaskProgress(patrolTaskStatusItem.getTaskProgress()); + iPatrolTaskStatusService.updatePatrolTaskStatusOfTaskProgress(taskStatus); + redisService.deleteObjectOfTask(RedisConst.TASK_CURRENT_CODE, taskStatus.getTaskCode()); + } + } else { + List statusList = patrolTaskStatusService.selectPatrolTaskStatusList(PatrolTaskStatus.builder().taskPatrolledId(patrolTaskStatusItem.getTaskPatrolledId()).build()); + if (!statusList.isEmpty()) { + PatrolTaskStatus taskStatus = statusList.get(0); + if (TaskStatus.RUNNING.getCode().equals(taskStatus.getTaskState())) { + logger.info(Color.CYAN + "updating patrol_task_status state, taskPatrolledId: {}, taskState: {}, taskCurCodeInRedis: {}" + Color.END, + patrolTaskStatusItem.getTaskPatrolledId(), + patrolTaskStatusItem.getTaskProgress(), + patrolTaskStatusItem.getTaskState(), + RedisConst.TASK_CURRENT_CODE + patrolTaskStatusItem.getTaskCode()); + patrolTaskStatusItem.setTaskState(TaskStatus.RUNNING.getCode()); + i = iPatrolTaskStatusService.updatePatrolTaskStatus(patrolTaskStatusItem); + } } } - } - if ("E100-001".equals(sendCode)) { - if ("100".equals(patrolTaskStatusItem.getTaskProgress())) { - saveDataToResultAnalysis(patrolTaskStatusItem.getTaskPatrolledId()); + if ("E100-001".equals(sendCode)) { + if ("100".equals(patrolTaskStatusItem.getTaskProgress())) { + saveDataToResultAnalysis(patrolTaskStatusItem.getTaskPatrolledId()); + } } } } else { patrolTaskStatusItem.setPosType(str); patrolTaskStatusItem.setCreateTime(new Date()); patrolTaskStatusItem.setStartTime(new Date()); + if(!"2".equals(patrolTaskStatusItem.getTaskState())) { + logger.info("任务一开始就给了错误的任务的状态: messageBody: {}", messageBody); + patrolTaskStatusItem.setTaskState("2"); + } + if (patrolTaskStatusItem.getTaskName().contains("联合") && !patrolTaskStatusItem.getTaskName().startsWith(sendCode)) { patrolTaskStatusItem.setTaskName(sendCode + "-" + patrolTaskStatusItem.getTaskName()); } @@ -1378,10 +1394,9 @@ public class PatrolResultController extends BaseController { patrolResultParam.setTaskPatrolledId(patrolResult.getTaskPatrolledId()); str = parseObject.getString("SendCode"); String strfile; - // 机器狗 if ("2".equals(datetype)) { logger.info("feedback from robot"); - Long patrolPointId = baseDataClient.queryPatrolPointId(str + "|" + patrolResult.getDeviceId()); + Long patrolPointId = baseDataClient.queryPatrolPointId(str + "_" + patrolResult.getDeviceId()); if (patrolPointId != null) { patrolResult.setDeviceId(patrolPointId.toString()); } @@ -1402,13 +1417,6 @@ public class PatrolResultController extends BaseController { } } } - // 无人机点位id处理 - if ("3".equals(datetype)) { - Long patrolPointId = baseDataClient.queryPatrolPointId(str + "|" + patrolResult.getDeviceId()); - if (patrolPointId != null) { - patrolResult.setDeviceId(patrolPointId.toString()); - } - } patrolResultParam.setDeviceId(patrolResult.getDeviceId()); patrolResultParam.setDataType(datetype); @@ -1771,47 +1779,47 @@ public class PatrolResultController extends BaseController { basedataEqpbookXml.setStationCode(stationNo); basedataEqpbookXml.setStationName(stationName); - if(basedataEqpbookXml.getDeviceModel() == null) { + if (basedataEqpbookXml.getDeviceModel() == null) { basedataEqpbookXml.setDeviceModel(""); } - if(basedataEqpbookXml.getManufacturer() == null) { + if (basedataEqpbookXml.getManufacturer() == null) { basedataEqpbookXml.setManufacturer(""); } - if(basedataEqpbookXml.getUseUnit() == null) { + if (basedataEqpbookXml.getUseUnit() == null) { basedataEqpbookXml.setUseUnit(""); } - if(basedataEqpbookXml.getDeviceSource() == null) { + if (basedataEqpbookXml.getDeviceSource() == null) { basedataEqpbookXml.setDeviceSource(""); } - if(basedataEqpbookXml.getProductionDate() == null) { + if (basedataEqpbookXml.getProductionDate() == null) { basedataEqpbookXml.setProductionDate(""); } - if(basedataEqpbookXml.getProductionCode() == null) { + if (basedataEqpbookXml.getProductionCode() == null) { basedataEqpbookXml.setProductionCode(""); } - if(basedataEqpbookXml.getUseMode() == null) { + if (basedataEqpbookXml.getUseMode() == null) { basedataEqpbookXml.setUseMode(""); } - if(basedataEqpbookXml.getVideoMode() == null) { + if (basedataEqpbookXml.getVideoMode() == null) { basedataEqpbookXml.setVideoMode(""); } - if(basedataEqpbookXml.getPlace() == null) { + if (basedataEqpbookXml.getPlace() == null) { basedataEqpbookXml.setPlace(""); } - if(basedataEqpbookXml.getPatrolDeviceInfo() == null) { + if (basedataEqpbookXml.getPatrolDeviceInfo() == null) { basedataEqpbookXml.setPatrolDeviceInfo(""); } - if(basedataEqpbookXml.getMountPatrolDeviceCode() == null) { + if (basedataEqpbookXml.getMountPatrolDeviceCode() == null) { basedataEqpbookXml.setMountPatrolDeviceCode(""); } @@ -2293,4 +2301,14 @@ public class PatrolResultController extends BaseController { return str; } + public static void main(String[] args) { + double runProgress = 0.0; + double dbProgress = 0.0; + if(runProgress > dbProgress) { + System.out.println("1"); + } else { + System.out.println("2"); + } + } + } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/config/SwaggerConfig.java b/inspect-metadata/src/main/java/com/inspect/metadata/config/SwaggerConfig.java new file mode 100644 index 0000000..d7ee90e --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/config/SwaggerConfig.java @@ -0,0 +1,21 @@ +package com.inspect.metadata.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; + +@Configuration +public class SwaggerConfig { + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.basePackage("com.inspect.metadata.eqpbook.controller")) + .paths(PathSelectors.any()) + .build(); + } +}