diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViCorpusController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViCorpusController.java index a609e7f..f366811 100644 --- a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViCorpusController.java +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/vi/ViCorpusController.java @@ -11,7 +11,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -108,20 +107,4 @@ public class ViCorpusController extends BaseController { public AjaxResult continuousRemove(@RequestBody String[] parentIds) { return toAjax(viCorpusService.deleteViCorpusByParentIds(parentIds)); } - -/* @ApiOperation("批量修改") - @PreAuthorize("@ss.hasPermi('vi:corpus:edit')") - @PostMapping("/updateBatch") - public AjaxResult updateBatch(@RequestBody List data) { - return toAjax(viCorpusService.updateBatch(data)); - }*/ - -/* @ApiOperation("批量新增/修改") - @PreAuthorize("@ss.hasPermi('vi:corpus:edit')") - @PostMapping("/insertOrUpdateBatch") - public AjaxResult insertOrUpdateBatch(@RequestBody List data) { - return toAjax(viCorpusService.insertOrUpdateBatch(data)); - }*/ - - } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java index 0300c8a..e06f6bc 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/ActionEnum.java @@ -25,6 +25,7 @@ public enum ActionEnum { SLEEP("NONE", "SLEEP", "延迟节点"), HTTP("NONE", "HTTP", "HTTP调用"), CODE("NONE", "CODE", "代码执行"), + GET_CURRENT_OBJECT("NONE", "GET_CURRENT_OBJECT", "获取当前循环对象"), // AI评估 AI_EVALUATION_PRE("AE", "AI_EVALUATION_PRE", "AI评估预处理"), // AI评估 diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java index 966f1aa..9296166 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/enums/NodeTypeEnum.java @@ -20,6 +20,7 @@ public enum NodeTypeEnum { SLEEP("sleep"), HTTP("http"), CODE("code"), + GET_CURRENT_OBJECT("getCurrentObject"), SUB_END("subEnd"), ; diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java index fb28a36..701c7b9 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/builder/FlowModelBuilder.java @@ -290,6 +290,8 @@ public class FlowModelBuilder { return NodeTypeEnum.HTTP; case "code": return NodeTypeEnum.CODE; + case "currentloop": + return NodeTypeEnum.GET_CURRENT_OBJECT; default: return NodeTypeEnum.FUNCTION; } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowGetCurrentObjNodeHandler.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowGetCurrentObjNodeHandler.java new file mode 100644 index 0000000..376ddcf --- /dev/null +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/dispatcher/FlowGetCurrentObjNodeHandler.java @@ -0,0 +1,40 @@ +package com.cmvr.test.flow.runtime.dispatcher; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteMessage; +import com.cmvr.test.flow.runtime.message.TaskNodeExecuteResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component("GET_CURRENT_OBJECT") +public class FlowGetCurrentObjNodeHandler implements FlowNodeTypeHandler { + + + @Override + public TaskNodeExecuteResult handle(TaskNodeExecuteMessage message) { + try { + JSONObject inputParams = message.getInputParams(); + + JSONArray jsonArray = inputParams.getJSONArray("array"); + + List iterations = message.getIterations(); + int last = CollUtil.getLast(iterations) - 1; + Object o = jsonArray.get(last); + + JSONObject output = new JSONObject(); + output.put("index", last); + output.put("object", o); + + return TaskNodeExecuteResult.success(output); + + } catch (Exception e) { + log.error("[FLOW][GET_CURRENT_OBJECT] 执行异常", e); + return TaskNodeExecuteResult.failure(e.getMessage()); + } + } +} diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java index b962b5b..507dc7f 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/support/FlowNodeParamPreparer.java @@ -1,6 +1,7 @@ package com.cmvr.test.flow.runtime.engine.support; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.cmvr.common.exception.GlobalException; @@ -99,7 +100,13 @@ public class FlowNodeParamPreparer { loopCount = ((Number) target).intValue(); } else if (target != null) { try { - loopCount = Integer.parseInt(target.toString()); + String string = target.toString(); + if (string.startsWith("[")) { + JSONArray array = JSON.parseArray(string); + loopCount = array.size(); + }else { + loopCount = Integer.parseInt(string); + } } catch (NumberFormatException e) { throw new GlobalException("loopNum 参数格式错误: " + loopNumVal); }