From f60db6cd8545aec9776d022fc5647d6f692c6730 Mon Sep 17 00:00:00 2001 From: stream Date: Thu, 25 Sep 2025 16:44:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=AD=E9=9F=B3=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=89=A7=E8=A1=8C=E3=80=81=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/vi/ViProjectController.java | 14 ++- .../cmvr/test/enums/FlowSceneTypeEnum.java | 30 +++++- .../runtime/engine/FlowTaskRuntimeEntry.java | 88 +++++++---------- .../test/model/domain/TeTaskConfigInfo.java | 2 + .../vo/TeQueryProjectOrchestraItemVO.java | 17 ++++ .../test/model/vo/TeTaskExecuteProjectVO.java | 8 +- .../test/model/vo/TeTaskExecuteTrailVO.java | 4 + .../impl/TeTaskConfigInfoServiceImpl.java | 2 +- .../com/cmvr/vi/model/domain/ViProject.java | 5 +- .../cmvr/vi/service/IViProjectService.java | 15 ++- .../vi/service/impl/ViProjectServiceImpl.java | 96 +++++++++++++------ .../vi/service/impl/ViSchemeServiceImpl.java | 20 +--- 12 files changed, 185 insertions(+), 116 deletions(-) create mode 100644 cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryProjectOrchestraItemVO.java diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViProjectController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViProjectController.java index aaa7d6a..909cc7f 100644 --- a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViProjectController.java +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViProjectController.java @@ -67,9 +67,21 @@ public class ViProjectController extends BaseController { return toAjax(viProjectService.deleteViProjectByProjectIds(projectIds)); } + @ApiOperation("查询项目执行时运行参数") + @GetMapping("/queryExecuteRunParams") + public AjaxResult queryExecuteRunParams(@RequestParam("projectId") String projectId) { + return AjaxResult.ok(viProjectService.queryExecuteRunParams(projectId)); + } + @ApiOperation("执行项目") @PostMapping("/execute") public AjaxResult execute(@RequestBody TeTaskExecuteProjectVO taskExecuteProjectVO) { - return AjaxResult.ok(viProjectService.execute(taskExecuteProjectVO)); + return AjaxResult.ok(viProjectService.executeProject(taskExecuteProjectVO)); + } + + @ApiOperation("查询最近一次项目执行实例id") + @GetMapping("/queryExecuteInstId/{projectId}") + public AjaxResult queryExecuteInstId(@PathVariable("projectId") String projectId) { + return AjaxResult.ok(viProjectService.queryExecuteInstId(projectId)); } } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/FlowSceneTypeEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/FlowSceneTypeEnum.java index 56ce95e..3c93eb6 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/FlowSceneTypeEnum.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/FlowSceneTypeEnum.java @@ -1,11 +1,31 @@ package com.cmvr.test.enums; +import com.cmvr.common.exception.GlobalException; +import lombok.AllArgsConstructor; +import lombok.Getter; + /** * 流程场景类型 */ +@Getter +@AllArgsConstructor public enum FlowSceneTypeEnum { - NORMAL, // 普通 - VI_WAKEUP_CORPUS, // 语音交互-唤醒场景 - VI_SINGLE_CORPUS, // 语音交互-单次对话场景 - VI_CONTINUOUS_CORPUS // 语音交互-连续对话场景 -} + NORMAL(0, "普通流程场景", "NORMAL"), + VI_WAKEUP_CORPUS(1, "语音交互-唤醒场景", "VI_WAKEUP_CORPUS"), + VI_SINGLE_CORPUS(2, "语音交互-单次对话场景", "VI_SINGLE_CORPUS"), + VI_CONTINUOUS_CORPUS(3, "语音交互-连续对话场景", "VI_CONTINUOUS_CORPUS"); + + private final int code; // 数字类型 + private final String desc; // 描述 + private final String sceneCode; // 数据库里存的 sceneCode + + // 根据 code 获取枚举 + public static FlowSceneTypeEnum fromCode(int code) { + for (FlowSceneTypeEnum e : values()) { + if (e.code == code) { + return e; + } + } + throw new GlobalException("场景类型参数错误: " + code); + } +} \ No newline at end of file diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java index fb8e4e7..b5c4fe8 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java @@ -5,7 +5,6 @@ import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.cmvr.common.exception.GlobalException; import com.cmvr.test.enums.ActionEnum; @@ -45,47 +44,19 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { @Transactional(rollbackFor = Exception.class) public String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO) { - String terminalId = taskExecuteNormalVO.getTerminalId(); - String taskId = taskExecuteNormalVO.getTaskId(); - - // 查询任务详情(检测项信息) - List details = taskOrchestrationService.queryTaskDetail(taskId); - int count = (int) details.stream().filter(dto -> ObjUtil.equals(dto.getIsDeploy(), "1")).count(); - if (count > 0) { - throw new GlobalException("当前任务存在未发布的检测项!"); - } - - // 检查终端状态 - if (taskInstHolder.isTerminalLocked(terminalId)) { - throw new GlobalException("当前终端正在执行其他任务,请稍后再试"); - } - - // 创建任务实例 - TeTaskInst instance = createAndSaveTaskInstance(taskId, terminalId, RunModeEnum.NORMAL); - String instId = instance.getId(); - - try { - // 注册上下文 - registerTaskContext(instId, taskId, terminalId, null, RunModeEnum.NORMAL, taskExecuteNormalVO.getRunParams()); - - // 异步提交执行 - flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.NORMAL, details); - return instId; - } catch (Exception e) { - taskInstHolder.markFailed( - instId, taskId, null, null, null, - ActionEnum.NONE.getOperate(), ActionEnum.NONE.getAction(), - JSON.toJSONString(taskExecuteNormalVO), - "任务执行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) - ); - throw new GlobalException("任务执行异常:" + e.getMessage()); - } + return executeTaskInternal( + taskExecuteNormalVO.getTerminalId(), + taskExecuteNormalVO.getTaskId(), + RunModeEnum.NORMAL, + taskExecuteNormalVO.getRunParams(), + taskExecuteNormalVO + ); } @Transactional(rollbackFor = Exception.class) public String executeTrialTask(TeTaskExecuteTrailVO taskExecuteTrailVO) { JSONObject runParams = taskExecuteTrailVO.getRunParams(); - String terminalId = runParams.getString("terminalId"); + String terminalId = taskExecuteTrailVO.getTerminalId(); if (StrUtil.isEmpty(terminalId)) { throw new GlobalException("终端ID不能为空"); } @@ -137,45 +108,50 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { @Transactional(rollbackFor = Exception.class) public String executeProjectTask(TeTaskExecuteProjectVO taskExecuteProjectVO) { - JSONObject runParams = taskExecuteProjectVO.getRunParams(); - String terminalId = runParams.getString("terminalId"); + return executeTaskInternal( + taskExecuteProjectVO.getTerminalId(), + taskExecuteProjectVO.getProjectId(), + RunModeEnum.PROJECT, + taskExecuteProjectVO.getRunParams(), + taskExecuteProjectVO + ); + } + + @Transactional(rollbackFor = Exception.class) + public String executeTaskInternal(String terminalId, String taskId, + RunModeEnum runMode, JSONObject runParams, Object originalVO) { if (StrUtil.isEmpty(terminalId)) { throw new GlobalException("终端ID不能为空"); } + // 检查终端状态 if (taskInstHolder.isTerminalLocked(terminalId)) { throw new GlobalException("当前终端正在执行其他任务,请稍后再试"); } - - String taskId = taskExecuteProjectVO.getProjectId(); - - // 查询任务详情(方案对应流程信息) + // 查询任务详情(检测项信息) List details = taskOrchestrationService.queryTaskDetail(taskId); - JSONArray prjInfo = taskExecuteProjectVO.getPrjInfo(); - for (int i = 0; i < details.size(); i++) { - JSONObject jsonObject = prjInfo.getJSONObject(i); - TeQueryTaskDetailDTO detail = details.get(i); - detail.setSchemeInfo(jsonObject); + int count = (int) details.stream().filter(dto -> ObjUtil.equals(dto.getIsDeploy(), "1")).count(); + if (count > 0) { + throw new GlobalException("当前任务存在未发布的检测项!"); } - - // 创建并保存任务实例 - TeTaskInst instance = createAndSaveTaskInstance(taskId, terminalId, RunModeEnum.PROJECT); + // 创建任务实例 + TeTaskInst instance = createAndSaveTaskInstance(taskId, terminalId, runMode); String instId = instance.getId(); try { // 注册上下文 - registerTaskContext(instId, taskId, terminalId, null, RunModeEnum.PROJECT, taskExecuteProjectVO.getRunParams()); + registerTaskContext(instId, taskId, terminalId, null, runMode, runParams); // 异步提交执行 - flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, RunModeEnum.PROJECT, details); + flowTaskAsyncDispatcher.submit(instId, taskId, terminalId, runMode, details); return instId; } catch (Exception e) { taskInstHolder.markFailed( instId, taskId, null, null, null, ActionEnum.NONE.getOperate(), ActionEnum.NONE.getAction(), - JSON.toJSONString(taskExecuteProjectVO), - "项目执行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) + JSON.toJSONString(originalVO), + "任务执行异常:" + StrUtil.sub(ExceptionUtil.getMessage(e), 0, 480) ); - throw new GlobalException("项目执行异常:" + e.getMessage()); + throw new GlobalException("任务执行异常:" + e.getMessage()); } } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java index 8adfcb8..ab655de 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java @@ -8,7 +8,9 @@ import com.cmvr.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; +@EqualsAndHashCode(callSuper = true) @Data @ApiModel("任务配置信息") public class TeTaskConfigInfo extends BaseEntity { diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryProjectOrchestraItemVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryProjectOrchestraItemVO.java new file mode 100644 index 0000000..bc66ba4 --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeQueryProjectOrchestraItemVO.java @@ -0,0 +1,17 @@ +package com.cmvr.test.model.vo; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@EqualsAndHashCode(callSuper = true) +@Data +public class TeQueryProjectOrchestraItemVO extends TeQueryTaskOrchestraItemVO{ + @ApiModelProperty("检测项ID") + private String schemeId; + + @ApiModelProperty("检测项名称") + private String schemeName; +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteProjectVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteProjectVO.java index 467ed06..85e9726 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteProjectVO.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteProjectVO.java @@ -1,6 +1,5 @@ package com.cmvr.test.model.vo; -import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -16,9 +15,10 @@ public class TeTaskExecuteProjectVO { @NotEmpty(message = "项目ID不能为空") private String projectId; + @ApiModelProperty("终端ID") + @NotEmpty(message = "终端ID不能为空") + private String terminalId; + @ApiModelProperty(value = "运行时参数") private JSONObject runParams = new JSONObject(); - - @ApiModelProperty(value = "项目运行时方案及语料信息") - private JSONArray prjInfo; } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java index 6d2d101..7c65068 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskExecuteTrailVO.java @@ -19,6 +19,10 @@ public class TeTaskExecuteTrailVO { @NotEmpty(message = "流程JSON数据不可为空") private String flowData; + @ApiModelProperty("终端ID") + @NotEmpty(message = "终端ID不能为空") + private String terminalId; + @ApiModelProperty(value = "运行时参数") private JSONObject runParams = new JSONObject(); } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java index 2f8fa52..9bae37f 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java @@ -49,7 +49,7 @@ public class TeTaskConfigInfoServiceImpl extends ServiceImpl { */ public int deleteViProjectByProjectIds(String[] projectIds); + /** + * 查询项目执行时运行参数 + */ + public List queryExecuteRunParams(String projectId); + /** * 执行项目 */ - public String execute(TeTaskExecuteProjectVO taskExecuteProjectVO); + public String executeProject(TeTaskExecuteProjectVO taskExecuteProjectVO); + + /** + * 查询最近一次项目执行记录 + */ + public String queryExecuteInstId(String projectId); + } diff --git a/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViProjectServiceImpl.java b/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViProjectServiceImpl.java index edecc52..04a4d6c 100644 --- a/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViProjectServiceImpl.java +++ b/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViProjectServiceImpl.java @@ -1,30 +1,34 @@ package com.cmvr.vi.service.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.exception.GlobalException; +import com.cmvr.test.enums.FlowSceneTypeEnum; import com.cmvr.test.enums.RunModeEnum; import com.cmvr.test.flow.runtime.engine.FlowTaskRuntimeService; +import com.cmvr.test.model.domain.TeDetectionItem; import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.domain.TeTaskInst; +import com.cmvr.test.model.vo.TeQueryProjectOrchestraItemVO; +import com.cmvr.test.model.vo.TeTaskExecuteNormalVO; import com.cmvr.test.model.vo.TeTaskExecuteProjectVO; +import com.cmvr.test.service.ITeDetectionItemService; import com.cmvr.test.service.ITeTaskConfigInfoService; +import com.cmvr.test.service.ITeTaskInstService; import com.cmvr.vi.mapper.ViProjectMapper; -import com.cmvr.vi.model.domain.ViCorpus; import com.cmvr.vi.model.domain.ViProject; import com.cmvr.vi.model.domain.ViScheme; -import com.cmvr.vi.service.IViCorpusService; import com.cmvr.vi.service.IViProjectService; import com.cmvr.vi.service.IViSchemeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; /** @@ -38,8 +42,9 @@ public class ViProjectServiceImpl extends ServiceImpl queryExecuteRunParams(String projectId) { + // 方案信息 List viSchemes = viSchemeService.querySchemesByProjectId(projectId); - JSONArray jsonArray = new JSONArray(); - for (ViScheme scheme : viSchemes) { - // 唤醒语料 - ViCorpus wakeCorpus = viCorpusService.queryCorpusByParentId(scheme.getWakeId()); + List result = new ArrayList<>(); - // 测试语料 - List testCorpus = Collections.emptyList(); - if (scheme.getSceneType() != 1) { - List corpusIds = StrUtil.split(scheme.getCorpusIds(), StrUtil.COMMA); - if (CollUtil.isNotEmpty(corpusIds)) { - testCorpus = viCorpusService.queryCorpusInParentIds(corpusIds); - } + for (ViScheme scheme : viSchemes) { + // 根据场景类型查找对应检测项流程 + String sceneTypeKey = FlowSceneTypeEnum.fromCode(scheme.getSceneType()).getSceneCode(); + TeDetectionItem item = detectionItemService.selectTeDetectionItemBySceneType(sceneTypeKey); + if (item == null) { + continue; } - JSONObject object = new JSONObject() - .fluentPut("scheme", scheme) - .fluentPut("wake", wakeCorpus) - .fluentPut("test", testCorpus); + TeQueryProjectOrchestraItemVO vo = new TeQueryProjectOrchestraItemVO(); + vo.setSchemeId(scheme.getSchemeId()); + vo.setSchemeName(scheme.getSchemeName()); + vo.setItemId(item.getId()); + vo.setConfig(item.getConfig()); + vo.setItemName(item.getDetectName()); + vo.setOrderNum(scheme.getSort()); - jsonArray.fluentAdd(object); + result.add(vo); } - taskExecuteProjectVO.setPrjInfo(jsonArray); - return flowTaskRuntimeService.executeProjectTask(taskExecuteProjectVO); + + // 重新归一化 1..N + for (int i = 0; i < result.size(); i++) { + result.get(i).setOrderNum(i + 1); + } + + return result; + } + + @Override + public String executeProject(TeTaskExecuteProjectVO taskExecuteProjectVO) { + TeTaskExecuteNormalVO normalVO = new TeTaskExecuteNormalVO(); + normalVO.setTaskId(taskExecuteProjectVO.getProjectId()); + normalVO.setRunParams(taskExecuteProjectVO.getRunParams()); + normalVO.setTerminalId(taskExecuteProjectVO.getTerminalId()); + String instId = flowTaskRuntimeService.executeTask(normalVO); + this.update( + new LambdaUpdateWrapper() + .eq(ViProject::getProjectId, taskExecuteProjectVO.getProjectId()) + .set(ViProject::getStatus, "0") + ); + return instId; + } + + @Override + public String queryExecuteInstId(String projectId) { + LambdaQueryWrapper wrapperProject = Wrappers.lambdaQuery(ViProject.class); + wrapperProject.eq(ViProject::getProjectId, projectId) + .eq(ViProject::getStatus, "0"); + ViProject project = this.getOne(wrapperProject); + if (ObjUtil.isEmpty(project)) { + throw new GlobalException(StrUtil.format("项目id为 [{}] 的任务不存在或未执行!", projectId)); + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(TeTaskInst.class); + wrapper.eq(TeTaskInst::getTaskId, projectId) + .orderByDesc(TeTaskInst::getCreateTime) + .last("LIMIT 1"); + TeTaskInst latestTaskInst = taskInstService.getOne(wrapper); + return latestTaskInst.getId(); } } diff --git a/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViSchemeServiceImpl.java b/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViSchemeServiceImpl.java index 5b51735..bd22aac 100644 --- a/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViSchemeServiceImpl.java +++ b/cmvr-iot-vi/src/main/java/com/cmvr/vi/service/impl/ViSchemeServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.cmvr.common.exception.GlobalException; import com.cmvr.test.enums.FlowSceneTypeEnum; import com.cmvr.test.model.domain.TeDetectionItem; import com.cmvr.test.model.vo.TeQueryTaskOrchestraItemVO; @@ -35,7 +34,7 @@ import java.util.stream.Collectors; public class ViSchemeServiceImpl extends ServiceImpl implements IViSchemeService { private final ITeTaskOrchestrationService teTaskOrchestrationService; - private final ITeDetectionItemService detectionItemService; + private final ITeDetectionItemService detectionItemService; @Override public ViScheme selectViSchemeBySchemeId(String schemeId) { @@ -61,14 +60,7 @@ public class ViSchemeServiceImpl extends ServiceImpl i Integer sort = viScheme.getSort(); // 获取对应场景流程id - Integer sceneType = viScheme.getSceneType(); // 1:唤醒 2:单次对话 3:连续对话 - String key; - switch (sceneType) { - case 1: key = FlowSceneTypeEnum.VI_WAKEUP_CORPUS.name(); break; - case 2: key = FlowSceneTypeEnum.VI_SINGLE_CORPUS.name(); break; - case 3: key = FlowSceneTypeEnum.VI_CONTINUOUS_CORPUS.name(); break; - default: throw new GlobalException("场景类型参数错误!"); - } + String key = FlowSceneTypeEnum.fromCode(viScheme.getSceneType()).getSceneCode(); TeDetectionItem item = detectionItemService.selectTeDetectionItemBySceneType(key); String itemId = item.getId(); @@ -122,13 +114,7 @@ public class ViSchemeServiceImpl extends ServiceImpl i // 找出要删的流程 itemId List deleteItemIds = taskSchemeMap.get(taskId).stream() .map(s -> { - String key; - switch (s.getSceneType()) { - case 1: key = FlowSceneTypeEnum.VI_WAKEUP_CORPUS.name(); break; - case 2: key = FlowSceneTypeEnum.VI_SINGLE_CORPUS.name(); break; - case 3: key = FlowSceneTypeEnum.VI_CONTINUOUS_CORPUS.name(); break; - default: throw new GlobalException("场景类型参数错误!"); - } + String key = FlowSceneTypeEnum.fromCode(s.getSceneType()).getSceneCode(); return detectionItemService.selectTeDetectionItemBySceneType(key).getId(); }) .collect(Collectors.toList());