Browse Source

fix 修复 查询任务扩展数据不存在导致的空报错

疯狂的狮子Li 8 months ago
parent
commit
6cf0c79433

+ 3 - 0
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java

@@ -214,6 +214,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
 
 
         // 解析 JSON 为 Dict 列表
         // 解析 JSON 为 Dict 列表
         List<Dict> nodeExtMap = JsonUtils.parseArrayMap(ext);
         List<Dict> nodeExtMap = JsonUtils.parseArrayMap(ext);
+        if (ObjectUtil.isEmpty(nodeExtMap)) {
+            return nodeExtVo;
+        }
 
 
         for (Dict nodeExt : nodeExtMap) {
         for (Dict nodeExt : nodeExtMap) {
             String code = nodeExt.getStr("code");
             String code = nodeExt.getStr("code");

+ 10 - 2
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@@ -600,14 +600,22 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
         }
         }
         NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt(), instance.getVariableMap());
         NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt(), instance.getVariableMap());
         //设置按钮权限
         //设置按钮权限
-        flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions());
+        if (CollUtil.isNotEmpty(nodeExtVo.getButtonPermissions())) {
+            flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions());
+        } else {
+            flowTaskVo.setButtonList(new ArrayList<>());
+        }
         if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
         if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
             List<FlowCopyVo> list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> new FlowCopyVo(Convert.toLong(x)));
             List<FlowCopyVo> list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> new FlowCopyVo(Convert.toLong(x)));
             flowTaskVo.setCopyList(list);
             flowTaskVo.setCopyList(list);
         } else {
         } else {
             flowTaskVo.setCopyList(new ArrayList<>());
             flowTaskVo.setCopyList(new ArrayList<>());
         }
         }
-        flowTaskVo.setVarList(nodeExtVo.getVariables());
+        if (CollUtil.isNotEmpty(nodeExtVo.getVariables())) {
+            flowTaskVo.setVarList(nodeExtVo.getVariables());
+        } else {
+            flowTaskVo.setVarList(new HashMap<>());
+        }
         flowTaskVo.setNodeRatio(flowNode.getNodeRatio());
         flowTaskVo.setNodeRatio(flowNode.getNodeRatio());
         flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId())));
         flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId())));
         return flowTaskVo;
         return flowTaskVo;