diff --git a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/api/service/AtuPlanTaskApiServiceImpl.java b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/api/service/AtuPlanTaskApiServiceImpl.java index 0aea0fc..cabb561 100644 --- a/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/api/service/AtuPlanTaskApiServiceImpl.java +++ b/cctp-atu/atu-execute-plan/src/main/java/net/northking/cctp/executePlan/api/service/AtuPlanTaskApiServiceImpl.java @@ -911,6 +911,24 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService TaskCaseStepDetailDto detailDto) { // 获取脚本执行结果信息 Map stepResultMap = new HashMap<>(); + + JSONArray commands = scriptJson.getJSONArray(MsgConstant.COMMANDS); + Map groupMap = new HashMap<>(); + for (Object command : commands) { + cn.hutool.json.JSONObject commandJson = JSONUtil.parseObj(command); + String commandName = commandJson.getStr(MsgConstant.COMMAND); + if ("group".equalsIgnoreCase(commandName)) { + String groupStepId = commandJson.getStr(MsgConstant.ID); + Object children = commandJson.get(MsgConstant.CHILDREN); + cn.hutool.json.JSONArray childrenArray = JSONUtil.parseArray(children); + for (Object child : childrenArray) { + cn.hutool.json.JSONObject childJson = JSONUtil.parseObj(child); + String childId = childJson.getStr(MsgConstant.ID); + groupMap.put(childId, groupStepId); + } + } + } + String stepId = ""; if (StrUtil.isNotEmpty(execResultFile)) { // 读取结果文件信息 @@ -928,7 +946,8 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService continue; } StepExecuteResult stepExecuteResult = JSONUtil.toBean(line, StepExecuteResult.class); - processStepResult(stepExecuteResult, stepResultMap, ""); + String groupId = groupMap.get(stepExecuteResult.getStepId()); + processStepResult(stepExecuteResult, stepResultMap, groupId); if (stepExecuteResult.getStepId() != null && stepExecuteResult.getStepId().startsWith("3e9da7b7c")) { // 用于只输出对应异常数据的详情,可以删除判断,每一个查询进行输出,日志增多而已 stepId = stepExecuteResult.getStepId(); stepResultMap.forEach((key, value) -> { @@ -948,7 +967,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService } } - JSONArray commands = JSONUtil.parseArray(scriptJson.get(MsgConstant.COMMANDS)); + commands.forEach(one -> checkGroup(stepResultMap, one)); List resultList = processStepData(commands, stepResultMap, scriptJson, detailDto, 0, false, false, ""); if (StringUtils.isNotBlank(stepId)) { for (TaskCaseStepDetailDto dto : resultList) { // 用于只输出对应异常数据的详情,可以删除判断,每一个查询进行输出,日志增多而已 @@ -958,6 +977,30 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService return resultList; } + private void checkGroup(Map stepResultMap, Object command) { + cn.hutool.json.JSONObject commandJson = JSONUtil.parseObj(command); + String commandStr = commandJson.getStr(MsgConstant.COMMAND); + String groupStepId = commandJson.getStr(MsgConstant.ID); + if ("group".equalsIgnoreCase(commandStr)) { + Object children = commandJson.get(MsgConstant.CHILDREN); + if (null != children) { + cn.hutool.json.JSONArray childrenArray = JSONUtil.parseArray(children); + childrenArray.forEach(child -> { + cn.hutool.json.JSONObject childJson = JSONUtil.parseObj(child); + String childId = childJson.getStr(MsgConstant.ID); + StepExecuteResult stepExecuteResult = stepResultMap.get(String.format("%s.%s", groupStepId, childId)); + if (null != stepExecuteResult && stepExecuteResult.isExecuted()) { + StepExecuteResult groupResult = new StepExecuteResult(); + groupResult.setExecuted(true); + groupResult.setStepId(groupStepId); + stepResultMap.put(groupStepId, groupResult); + } + }); + } + + } + } + /** * 步骤执行结果处理 * @@ -1092,14 +1135,16 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService stepDetailDto.setExecResult(childSuccess); stepDetailDto.setExecuted(childExecuted); // 处理子步骤 - if (PlanConstant.GROUP_COMMAND.equals(commandStr)) { - // 分区步骤结果特殊处理,分区下的步骤执行结果不在分区步骤的childResult中 - stepDetailDto.setStepList(processStepData(commandJson.getJSONArray(MsgConstant.CHILDREN), stepResultMap, - scriptJson, stepDetailDto, num, childSuccess, childExecuted, "")); - } else { - stepDetailDto.setStepList(processStepData(commandJson.getJSONArray(MsgConstant.CHILDREN), stepResultMap, - scriptJson, stepDetailDto, num, childSuccess, childExecuted, stepId)); - } +// if (PlanConstant.GROUP_COMMAND.equals(commandStr)) { +// // 分区步骤结果特殊处理,分区下的步骤执行结果不在分区步骤的childResult中 +// stepDetailDto.setStepList(processStepData(commandJson.getJSONArray(MsgConstant.CHILDREN), stepResultMap, +// scriptJson, stepDetailDto, num, childSuccess, childExecuted, "")); +// } else { +// stepDetailDto.setStepList(processStepData(commandJson.getJSONArray(MsgConstant.CHILDREN), stepResultMap, +// scriptJson, stepDetailDto, num, childSuccess, childExecuted, stepId)); +// } + stepDetailDto.setStepList(processStepData(commandJson.getJSONArray(MsgConstant.CHILDREN), stepResultMap, + scriptJson, stepDetailDto, num, childSuccess, childExecuted, stepId)); // 判断是否内部组件 if (ObjectUtil.equal(PlanConstant.INTERNAL_COMPONENT_LIB, componentLib)) { if (ObjectUtil.equal(PlanConstant.INTERFACE_STEP_TYPE, stepType) ||