From 68b2698614fa00318513e27db7c2f5464a1b3943 Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Tue, 2 Jun 2026 16:53:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(flow):=20=E9=9B=86=E6=88=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=95=E6=93=8E=E6=8E=A7=E5=88=B6=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 GlobalException 中添加对原始异常的支持,实现错误链路追踪 - 为巡检任务和任务实例实体增加任务配置ID和检测任务ID字段 - 更新数据映射文件以同步数据库结构变更 - 在任务实例服务中注入流程控制服务并实现执行、暂停、停止和恢复功能 - 优化任务上下文管理器中的终端ID空值处理逻辑 - 移除终端ID非空校验并调整相关业务逻辑 - 重构任务执行VO类以支持流程引擎调用参数传递 --- .../common/exception/GlobalException.java | 52 ++++++++----------- .../inspection/domain/InspectionTask.java | 2 +- .../domain/InspectionTaskInstance.java | 4 ++ .../domain/vo/InspectionTaskInstanceVo.java | 4 ++ .../domain/vo/InspectionTaskVo.java | 5 ++ .../InspectionTaskInstanceServiceImpl.java | 13 +++++ .../impl/InspectionTaskServiceImpl.java | 8 +-- .../InspectionTaskInstanceMapper.xml | 13 +++-- .../inspection/InspectionTaskMapper.xml | 9 +++- .../test/flow/context/TaskContextManager.java | 8 ++- .../runtime/engine/FlowTaskRuntimeEntry.java | 4 +- .../interceptor/FlowExceptionInterceptor.java | 6 +-- .../test/model/vo/TeTaskExecuteNormalVO.java | 6 +++ .../test/model/vo/TeTaskExecuteTrailVO.java | 2 +- sql/inspection_module.sql | 2 + 15 files changed, 90 insertions(+), 48 deletions(-) diff --git a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java index 32725bf..a4f2795 100644 --- a/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java +++ b/cmvr-iot-common/src/main/java/com/cmvr/common/exception/GlobalException.java @@ -3,63 +3,55 @@ package com.cmvr.common.exception; import cn.hutool.core.util.StrUtil; /** - * 全局异常 - * - * @author cmvrIot + * 全局自定义业务异常 */ -public class GlobalException extends RuntimeException -{ +public class GlobalException extends RuntimeException { private static final long serialVersionUID = 1L; - /** - * 错误提示 - */ + /** 前端展示提示信息 */ private String message; - - /** - * 错误明细,内部调试错误 - * - * 和 {@link CommonResult#getDetailMessage()} 一致的设计 - */ + /** 后端详细错误信息(数据库/原始异常详情) */ private String detailMessage; - /** - * 空构造方法,避免反序列化问题 - */ - public GlobalException() - { + // 空构造,序列化使用 + public GlobalException() { } - public GlobalException(String message) - { + // 单纯提示信息 + public GlobalException(String message) { this.message = message; } + // 占位符格式化提示 public GlobalException(String template, Object... params) { this.message = StrUtil.format(template, params); } + // 【重点:支持 提示+原始异常】对应 throw new GlobalException("任务执行失败", e); + public GlobalException(String message, Throwable cause) { + super(cause); // 绑定原始异常栈,日志可打全堆栈 + this.message = message; + if (cause != null) { + this.detailMessage = cause.getMessage(); + } + } - public String getDetailMessage() - { + public String getDetailMessage() { return detailMessage; } - public GlobalException setDetailMessage(String detailMessage) - { + public GlobalException setDetailMessage(String detailMessage) { this.detailMessage = detailMessage; return this; } @Override - public String getMessage() - { + public String getMessage() { return message; } - public GlobalException setMessage(String message) - { + public GlobalException setMessage(String message) { this.message = message; return this; } -} +} \ No newline at end of file diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java index 0ffe1ee..407da2d 100644 --- a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java @@ -45,6 +45,6 @@ public class InspectionTask extends BaseEntity /** 任务id */ @Excel(name = "任务id") @ApiModelProperty("任务id") - private String teTaskConfigId; + private String taskConfigId; } diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java index 1d57d01..6f2df30 100644 --- a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java @@ -52,4 +52,8 @@ public class InspectionTaskInstance extends BaseEntity @ApiModelProperty("结束时间") private Date endTime; + @Excel(name = "检测任务id") + @ApiModelProperty("检测任务id") + private String taskInsId; + } diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java index c5ea52f..19422a8 100644 --- a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java @@ -90,4 +90,8 @@ public class InspectionTaskInstanceVo extends BaseEntity @ApiModelProperty("修改人昵称") private String updateByName; + @Excel(name = "检测任务id") + @ApiModelProperty("检测任务id") + private String taskInsId; + } diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java index b6b064e..a79f76b 100644 --- a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java @@ -53,4 +53,9 @@ public class InspectionTaskVo extends BaseEntity @ApiModelProperty("修改人昵称") private String updateByName; + /** 任务id */ + @Excel(name = "任务id") + @ApiModelProperty("任务id") + private String taskConfigId; + } diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java index 7b0ca7c..832867e 100644 --- a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java @@ -8,6 +8,9 @@ import com.cmvr.common.exception.ServiceException; import com.cmvr.common.utils.SecurityUtils; import com.cmvr.inspection.domain.vo.InspectionTaskInstanceVo; import com.cmvr.inspection.enums.TaskStatusEnum; +import com.cmvr.test.flow.control.FlowControlService; +import com.cmvr.test.flow.runtime.engine.FlowTaskRuntimeService; +import com.cmvr.test.model.vo.TeTaskExecuteNormalVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.cmvr.common.utils.DateUtils; @@ -27,6 +30,11 @@ public class InspectionTaskInstanceServiceImpl extends ServiceImpl inspectionTasks = this.baseMapper.selectBatchIds(Arrays.asList(ids)); // 批量删除任务 - teTaskConfigInfoService.deleteTeTaskConfigInfoByIds(inspectionTasks.stream().map(InspectionTask::getTeTaskConfigId).toArray(String[]::new)); + teTaskConfigInfoService.deleteTeTaskConfigInfoByIds(inspectionTasks.stream().map(InspectionTask::getTaskConfigId).toArray(String[]::new)); return inspectionTaskMapper.deleteInspectionTaskByIds(ids); } @@ -166,7 +166,7 @@ public class InspectionTaskServiceImpl extends ServiceImpl waypoints = inspectionTaskWaypointMapper.selectWaypointsByTaskId(taskId); // 同步任务编排 - TeTaskOrchestraVO teTaskOrchestraVO = TeTaskOrchestraVO.builder().taskId(inspectionTask.getTeTaskConfigId()).itemIds(waypoints.stream().map(InspectionWaypoint::getDetectItemId).collect(Collectors.toList())).build(); + TeTaskOrchestraVO teTaskOrchestraVO = TeTaskOrchestraVO.builder().taskId(inspectionTask.getTaskConfigId()).itemIds(waypoints.stream().map(InspectionWaypoint::getDetectItemId).collect(Collectors.toList())).build(); teTaskOrchestrationService.insertTeTaskOrchestration(teTaskOrchestraVO); return inspectionTaskWaypointMapper.batchInsertTaskWaypoint(list); } diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml index 2c4fb17..228a30f 100644 --- a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml @@ -16,6 +16,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -37,10 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, create_by, create_time, update_by, update_time, remark, task_id, robot_id, status, start_time, end_time from inspection_task_instance + select id, create_by, create_time, update_by, update_time, remark, task_id, robot_id, status, start_time, end_time, task_ins_id from inspection_task_instance @@ -60,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" task_code, task_name, task_type, + task_config_id, #{id}, @@ -71,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{taskCode}, #{taskName}, #{taskType}, + #{taskConfigId}, @@ -85,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" task_code = #{taskCode}, task_name = #{taskName}, task_type = #{taskType}, + task_config_id = #{taskConfigId}, where id = #{id} @@ -102,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"