From b8a40869709fa5e71e3cda0457a1cd8e9e7946f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com>
Date: Sat, 25 Jan 2025 10:43:02 +0800
Subject: [PATCH] =?UTF-8?q?feat(flow):=20=E9=80=82=E9=85=8D=20form-design?=
=?UTF-8?q?=20=E8=A1=A8=E5=8D=95=E8=AE=BE=E8=AE=A1=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pigx-flow-engine-biz/pom.xml | 5 +
.../controller/EngineFlowController.java | 2 -
.../EngineProcessInstanceController.java | 6 +-
.../controller/EngineTaskController.java | 24 +
.../engine/expression/ExpressionHandler.java | 9 +-
.../NodeExpressionStrategyFactory.java | 19 +-
.../impl/DateNodeConditionStrategy.java | 2 +-
.../impl/InputNodeConditionStrategy.java | 2 +-
.../impl/MoneyNodeConditionStrategy.java | 28 --
.../impl/NumberNodeConditionStrategy.java | 2 +-
.../impl/TimeNodeConditionStrategy.java | 2 +-
.../listeners/FlowProcessEventListener.java | 17 +-
.../impl/AssignUserFixedStrategyImpl.java | 10 +-
.../node/impl/AssignUserFormStrategyImpl.java | 3 +-
.../node/impl/AssignUserRoleStrategyImpl.java | 5 +-
.../engine/service/ApproveServiceTask.java | 12 +-
.../flow/engine/service/CopyServiceTask.java | 15 +-
.../pigx/flow/engine/utils/FlowableUtils.java | 14 +-
.../pigx/flow/engine/utils/ModelUtil.java | 3 +-
.../api/feign/RemoteFlowEngineService.java | 6 +-
.../task/api/feign/RemoteFlowTaskService.java | 7 -
.../pigx/flow/task/constant/IBaseEnum.java | 6 +-
.../pigx/flow/task/dto/TaskParamDto.java | 73 +--
.../pigx/flow/task/vo/FormItemVO.java | 5 +-
.../pigx/flow/task/vo/ProcessVO.java | 5 +
.../pigx-flow-task/pigx-flow-task-biz/pom.xml | 5 +
.../task/config/SequenceConfiguration.java | 13 +-
.../controller/ProcessInstanceController.java | 31 +-
.../controller/ProcessNodeDataController.java | 2 -
.../task/controller/RemoteController.java | 30 +-
.../impl/CombinationGroupServiceImpl.java | 54 ++-
.../service/impl/ProcessCopyServiceImpl.java | 114 ++---
.../impl/ProcessInstanceServiceImpl.java | 73 +--
.../impl/ProcessNodeDataServiceImpl.java | 9 +-
...rocessNodeRecordAssignUserServiceImpl.java | 22 +-
.../impl/ProcessNodeRecordServiceImpl.java | 11 +-
.../task/service/impl/ProcessServiceImpl.java | 350 +++++++-------
.../task/service/impl/RemoteServiceImpl.java | 13 +-
.../task/service/impl/TaskServiceImpl.java | 435 ++++++++----------
.../pigx/flow/task/utils/DataUtil.java | 10 +-
.../pigx/flow/task/utils/NodeFormatUtil.java | 12 +-
41 files changed, 672 insertions(+), 794 deletions(-)
delete mode 100644 pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/MoneyNodeConditionStrategy.java
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/pom.xml b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/pom.xml
index e96096b60..f473cf8bc 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/pom.xml
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/pom.xml
@@ -74,6 +74,11 @@
com.pig4cloud
pigx-common-sentinel
+
+
+ com.pig4cloud
+ pigx-common-encrypt-api
+
com.pig4cloud
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineFlowController.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineFlowController.java
index 7a86dc0a5..ac353f0c6 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineFlowController.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineFlowController.java
@@ -11,7 +11,6 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.flow.engine.utils.ModelUtil;
import com.pig4cloud.pigx.flow.task.dto.*;
import com.pig4cloud.pigx.flow.task.entity.Process;
@@ -96,7 +95,6 @@ public class EngineFlowController {
* @param processInstanceParamDto 启动参数
* @return 流程实例ID
*/
- @Inner
@PostMapping("/start")
public R start(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
Authentication.setAuthenticatedUserId(processInstanceParamDto.getStartUserId());
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineProcessInstanceController.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineProcessInstanceController.java
index 392a3c0a5..36c7e75c1 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineProcessInstanceController.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineProcessInstanceController.java
@@ -46,8 +46,10 @@ public class EngineProcessInstanceController {
long completedNum = historicActivityInstanceQuery.taskAssignee(String.valueOf(userId)).finished().count();
- IndexPageStatistics indexPageStatistics = IndexPageStatistics.builder().pendingNum(pendingNum)
- .completedNum(completedNum).build();
+ IndexPageStatistics indexPageStatistics = IndexPageStatistics.builder()
+ .pendingNum(pendingNum)
+ .completedNum(completedNum)
+ .build();
return R.ok(indexPageStatistics);
}
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java
index 470ba04df..46ba0cb5f 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/controller/EngineTaskController.java
@@ -154,4 +154,28 @@ public class EngineTaskController {
return R.ok();
}
+ /**
+ * 设置执行人 (转办)
+ *
+ * @param taskParamDto 任务参数DTO
+ * @return 操作结果
+ */
+ @PostMapping("/transferTask")
+ public R transferTask(@RequestBody TaskParamDto taskParamDto) {
+ Map taskLocalParamMap = taskParamDto.getTaskLocalParamMap();
+ if (CollUtil.isNotEmpty(taskLocalParamMap)) {
+ taskService.setVariablesLocal(taskParamDto.getTaskId(), taskLocalParamMap);
+ }
+
+ // 设置任务的 owner 为当前任务的 assignee
+ Task task = taskService.createTaskQuery().taskId(taskParamDto.getTaskId()).includeTaskLocalVariables().singleResult();
+ taskService.setOwner(taskParamDto.getTaskId(), task.getAssignee());
+
+ // 设置任务的 assignee 为目标用户 (转办用户)
+ for (Long targetUserId : taskParamDto.getTargetUserIdList()) {
+ taskService.setAssignee(taskParamDto.getTaskId(), targetUserId.toString());
+ }
+ return R.ok();
+ }
+
}
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/ExpressionHandler.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/ExpressionHandler.java
index 21da08529..de102b0e3 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/ExpressionHandler.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/ExpressionHandler.java
@@ -44,7 +44,8 @@ public class ExpressionHandler {
Object variable = execution.getVariable(key);
NodeUser nodeUserDto = objectMapper
.readValue(objectMapper.writeValueAsString(variable), new TypeReference>() {
- }).get(0);
+ })
+ .get(0);
return nodeUserDto.getId();
}
@@ -289,11 +290,13 @@ public class ExpressionHandler {
});
List deptIdList = paramDeptList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey())).map(NodeUser::getId)
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey()))
+ .map(NodeUser::getId)
.collect(Collectors.toList());
List userIdList = paramDeptList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey())).map(NodeUser::getId)
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey()))
+ .map(NodeUser::getId)
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(deptIdList)) {
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/NodeExpressionStrategyFactory.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/NodeExpressionStrategyFactory.java
index f4550879d..30c370825 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/NodeExpressionStrategyFactory.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/NodeExpressionStrategyFactory.java
@@ -10,18 +10,27 @@ import com.pig4cloud.pigx.flow.task.dto.Node;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
public class NodeExpressionStrategyFactory {
public static String handleSingleCondition(Condition nodeConditionDto) {
Map nodeConditionStrategyMap = SpringUtil
- .getBeansOfType(NodeConditionStrategy.class);
- NodeConditionStrategy nodeConditionHandler = nodeConditionStrategyMap
- .get(nodeConditionDto.getKeyType() + "NodeConditionStrategy");
- if (nodeConditionHandler == null) {
+ .getBeansOfType(NodeConditionStrategy.class);
+
+ // 通过keyType获取对应的处理器, 忽略大小写
+ AtomicReference nodeConditionHandler = new AtomicReference<>();
+ nodeConditionStrategyMap.forEach((k, v) -> {
+ if (k.equalsIgnoreCase(nodeConditionDto.getKeyType() + "NodeConditionStrategy")) {
+ nodeConditionHandler.set(v);
+ }
+ });
+
+
+ if (nodeConditionHandler.get() == null) {
return "(1==1)";
}
- return nodeConditionHandler.handle(nodeConditionDto);
+ return nodeConditionHandler.get().handle(nodeConditionDto);
}
/**
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/DateNodeConditionStrategy.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/DateNodeConditionStrategy.java
index 85a17089f..8c4ff67c2 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/DateNodeConditionStrategy.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/DateNodeConditionStrategy.java
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
* 字符类型处理器
*/
-@Component("DateNodeConditionStrategy")
+@Component("datePickerNodeConditionStrategy")
public class DateNodeConditionStrategy implements NodeConditionStrategy {
/**
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/InputNodeConditionStrategy.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/InputNodeConditionStrategy.java
index 6176f80b6..c9d8077d7 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/InputNodeConditionStrategy.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/InputNodeConditionStrategy.java
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
* 字符类型处理器
*/
-@Component("InputNodeConditionStrategy")
+@Component("inputNodeConditionStrategy")
public class InputNodeConditionStrategy implements NodeConditionStrategy {
/**
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/MoneyNodeConditionStrategy.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/MoneyNodeConditionStrategy.java
deleted file mode 100644
index 90e720521..000000000
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/MoneyNodeConditionStrategy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.pig4cloud.pigx.flow.engine.expression.condition.impl;
-
-import cn.hutool.core.util.StrUtil;
-import com.pig4cloud.pigx.flow.engine.expression.condition.NodeConditionStrategy;
-import com.pig4cloud.pigx.flow.task.dto.Condition;
-import org.springframework.stereotype.Component;
-
-/**
- * 字符类型处理器
- */
-@Component("MoneyNodeConditionStrategy")
-public class MoneyNodeConditionStrategy implements NodeConditionStrategy {
-
- /**
- * 抽象方法 处理表达式
- */
- @Override
- public String handle(Condition condition) {
-
- String compare = condition.getExpression();
- String id = condition.getKey();
- Object value = condition.getValue();
-
- return StrUtil.format("(expressionHandler.numberCompare(\"{}\",\"{}\",{},execution))", id, compare, value);
-
- }
-
-}
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/NumberNodeConditionStrategy.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/NumberNodeConditionStrategy.java
index a55086c55..d722b6444 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/NumberNodeConditionStrategy.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/NumberNodeConditionStrategy.java
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
* 字符类型处理器
*/
-@Component("NumberNodeConditionStrategy")
+@Component("inputNumberNodeConditionStrategy")
public class NumberNodeConditionStrategy implements NodeConditionStrategy {
/**
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/TimeNodeConditionStrategy.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/TimeNodeConditionStrategy.java
index 44db0c2f0..7ba8adea9 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/TimeNodeConditionStrategy.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/expression/condition/impl/TimeNodeConditionStrategy.java
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
/**
* 字符类型处理器
*/
-@Component("TimeNodeConditionStrategy")
+@Component("timePickerNodeConditionStrategy")
public class TimeNodeConditionStrategy implements NodeConditionStrategy {
/**
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java
index 6df3850f1..f3330ee82 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java
@@ -72,10 +72,12 @@ public class FlowProcessEventListener implements FlowableEventListener {
remoteFlowTaskService.startNodeEvent(processNodeRecordParamDto);
}
- if (event.getType().toString()
+ if (event.getType()
+ .toString()
.equals(FlowableEngineEventType.MULTI_INSTANCE_ACTIVITY_COMPLETED_WITH_CONDITION.toString())
- || event.getType().toString()
- .equals(FlowableEngineEventType.MULTI_INSTANCE_ACTIVITY_COMPLETED.toString())) {
+ || event.getType()
+ .toString()
+ .equals(FlowableEngineEventType.MULTI_INSTANCE_ACTIVITY_COMPLETED.toString())) {
// 多实例任务
FlowableMultiInstanceActivityCompletedEventImpl flowableActivityEvent = (FlowableMultiInstanceActivityCompletedEventImpl) event;
String activityId = flowableActivityEvent.getActivityId();
@@ -140,7 +142,8 @@ public class FlowProcessEventListener implements FlowableEventListener {
log.debug("变量[{}]删除了:{} ", flowableVariableEvent.getVariableName(),
flowableVariableEvent.getVariableValue());
}
- if (event.getType().toString()
+ if (event.getType()
+ .toString()
.equals(FlowableEngineEventType.PROCESS_COMPLETED_WITH_TERMINATE_END_EVENT.toString())) {
// 流程开完成
FlowableProcessTerminatedEventImpl e = (FlowableProcessTerminatedEventImpl) event;
@@ -223,9 +226,9 @@ public class FlowProcessEventListener implements FlowableEventListener {
processNodeRecordAssignUserParamDto.setTaskId(task.getId());
processNodeRecordAssignUserParamDto.setNodeName(task.getName());
processNodeRecordAssignUserParamDto
- .setTaskType(StrUtil.equals(DelegationState.PENDING.toString(), delegationStateString)
- ? "DELEGATION" : (StrUtil.equals(DelegationState.RESOLVED.toString(), delegationStateString)
- ? "RESOLVED" : ""));
+ .setTaskType(StrUtil.equals(DelegationState.PENDING.toString(), delegationStateString) ? "DELEGATION"
+ : (StrUtil.equals(DelegationState.RESOLVED.toString(), delegationStateString) ? "RESOLVED"
+ : ""));
processNodeRecordAssignUserParamDto.setApproveDesc(Convert.toStr(task.getVariableLocal("approveDesc")));
processNodeRecordAssignUserParamDto.setExecutionId(task.getExecutionId());
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFixedStrategyImpl.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFixedStrategyImpl.java
index 098bcd5d1..6257e96b9 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFixedStrategyImpl.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFixedStrategyImpl.java
@@ -44,12 +44,14 @@ public class AssignUserFixedStrategyImpl implements AssignUserStrategy {
List userDtoList = node.getNodeUserList();
// 用户ID列表
List userIdList = userDtoList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey())).map(NodeUser::getId)
- .collect(Collectors.toList());
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey()))
+ .map(NodeUser::getId)
+ .collect(Collectors.toList());
// 部门ID列表
List deptIdList = userDtoList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey())).map(NodeUser::getId)
- .collect(Collectors.toList());
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey()))
+ .map(NodeUser::getId)
+ .collect(Collectors.toList());
if (CollUtil.isNotEmpty(deptIdList)) {
R> r = remoteUserService.getUserIdListByDeptIdList(deptIdList);
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFormStrategyImpl.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFormStrategyImpl.java
index 2facc3138..5be14b2de 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFormStrategyImpl.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserFormStrategyImpl.java
@@ -14,7 +14,6 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
/**
* 来自表单
@@ -38,7 +37,7 @@ public class AssignUserFormStrategyImpl implements AssignUserStrategy {
if (variable != null && !StrUtil.isBlankIfStr(variable)) {
String jsonString = objectMapper.writeValueAsString(variable);
List nodeUserDtoList = JSONUtil.toList(jsonString, NodeUser.class);
- assignList.addAll(nodeUserDtoList.stream().map(NodeUser::getId).collect(Collectors.toList()));
+ assignList.addAll(nodeUserDtoList.stream().map(NodeUser::getId).toList());
}
return assignList;
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserRoleStrategyImpl.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserRoleStrategyImpl.java
index 192428c96..bae0d039e 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserRoleStrategyImpl.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/impl/AssignUserRoleStrategyImpl.java
@@ -40,8 +40,9 @@ public class AssignUserRoleStrategyImpl implements AssignUserStrategy {
// 使用 lambda 表达式和方法引用从 NodeUser 列表中提取角色 ID
List roleIds = node.getNodeUserList().stream().map(NodeUser::getId).collect(Collectors.toList());
// 提取 Optional 结果中的数据
- List data = RetOps.of(remoteUserService.getUserIdListByRoleIdList(roleIds)).getData()
- .orElseGet(Collections::emptyList);
+ List data = RetOps.of(remoteUserService.getUserIdListByRoleIdList(roleIds))
+ .getData()
+ .orElseGet(Collections::emptyList);
// 返回用户 ID 列表
return new ArrayList<>(data);
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/ApproveServiceTask.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/ApproveServiceTask.java
index ee6021294..11881cbaa 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/ApproveServiceTask.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/ApproveServiceTask.java
@@ -41,12 +41,16 @@ public class ApproveServiceTask implements JavaDelegate {
if (refuse != null) {
String handler = refuse.getHandler();
if (StrUtil.equals(handler, "TO_NODE")) {
- runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
- .moveActivityIdTo(nodeIdO, refuse.getNodeId()).changeState();
+ runtimeService.createChangeActivityStateBuilder()
+ .processInstanceId(processInstanceId)
+ .moveActivityIdTo(nodeIdO, refuse.getNodeId())
+ .changeState();
}
else {
- runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
- .moveActivityIdTo(nodeIdO, "end").changeState();
+ runtimeService.createChangeActivityStateBuilder()
+ .processInstanceId(processInstanceId)
+ .moveActivityIdTo(nodeIdO, "end")
+ .changeState();
}
}
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java
index c803988b7..16a880f6d 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java
@@ -46,12 +46,14 @@ public class CopyServiceTask implements JavaDelegate {
List userDtoList = node.getNodeUserList();
// 用户ID列表
List userIdList = userDtoList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey()))
- .map(w -> Convert.toStr(w.getId())).collect(Collectors.toList());
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.USER.getKey()))
+ .map(w -> Convert.toStr(w.getId()))
+ .collect(Collectors.toList());
// 部门ID列表
List deptIdList = userDtoList.stream()
- .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey()))
- .map(w -> Convert.toStr(w.getId())).collect(Collectors.toList());
+ .filter(w -> StrUtil.equals(w.getType(), NodeUserTypeEnum.DEPT.getKey()))
+ .map(w -> Convert.toStr(w.getId()))
+ .collect(Collectors.toList());
if (CollUtil.isNotEmpty(deptIdList)) {
@@ -71,8 +73,9 @@ public class CopyServiceTask implements JavaDelegate {
// 获取发起人
Object rootUserObj = execution.getVariable("root");
NodeUser rootUser = objectMapper
- .readValue(objectMapper.writeValueAsString(rootUserObj), new TypeReference>() {
- }).get(0);
+ .readValue(objectMapper.writeValueAsString(rootUserObj), new TypeReference>() {
+ })
+ .get(0);
Map variables = execution.getVariables();
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/FlowableUtils.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/FlowableUtils.java
index d62ba20e8..b528c8051 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/FlowableUtils.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/FlowableUtils.java
@@ -128,7 +128,7 @@ public class FlowableUtils {
// 获取子流程用户任务节点
List childUserTaskList = findChildProcessUserTasks(
(StartEvent) ((SubProcess) sequenceFlow.getSourceFlowElement()).getFlowElements()
- .toArray()[0],
+ .toArray()[0],
null, null);
// 如果找到节点,则说明该线路找到节点,不继续向下找,反之继续
if (childUserTaskList != null && childUserTaskList.size() > 0) {
@@ -189,7 +189,7 @@ public class FlowableUtils {
if (sequenceFlow.getTargetFlowElement() instanceof SubProcess) {
List childUserTaskList = iteratorFindChildUserTasks(
(FlowElement) (((SubProcess) sequenceFlow.getTargetFlowElement()).getFlowElements()
- .toArray()[0]),
+ .toArray()[0]),
runActiveIdList, hasSequenceFlow, null);
// 如果找到节点,则说明该线路找到节点,不继续向下找,反之继续
if (childUserTaskList != null && childUserTaskList.size() > 0) {
@@ -240,7 +240,7 @@ public class FlowableUtils {
if (sequenceFlow.getTargetFlowElement() instanceof SubProcess) {
List childUserTaskList = findChildProcessUserTasks(
(FlowElement) (((SubProcess) sequenceFlow.getTargetFlowElement()).getFlowElements()
- .toArray()[0]),
+ .toArray()[0]),
hasSequenceFlow, null);
// 如果找到节点,则说明该线路找到节点,不继续向下找,反之继续
if (childUserTaskList != null && childUserTaskList.size() > 0) {
@@ -302,12 +302,12 @@ public class FlowableUtils {
if (sequenceFlow.getSourceFlowElement() instanceof SubProcess) {
dirtyRoads = findChildProcessAllDirtyRoad(
(StartEvent) ((SubProcess) sequenceFlow.getSourceFlowElement()).getFlowElements()
- .toArray()[0],
+ .toArray()[0],
null, dirtyRoads);
// 是否存在子流程上,true 是,false 否
Boolean isInChildProcess = dirtyTargetInChildProcess(
(StartEvent) ((SubProcess) sequenceFlow.getSourceFlowElement()).getFlowElements()
- .toArray()[0],
+ .toArray()[0],
null, targets, null);
if (isInChildProcess) {
// 已在子流程上找到,该路线结束
@@ -354,7 +354,7 @@ public class FlowableUtils {
if (sequenceFlow.getTargetFlowElement() instanceof SubProcess) {
dirtyRoads = findChildProcessAllDirtyRoad(
(FlowElement) (((SubProcess) sequenceFlow.getTargetFlowElement()).getFlowElements()
- .toArray()[0]),
+ .toArray()[0]),
hasSequenceFlow, dirtyRoads);
}
// 继续迭代
@@ -401,7 +401,7 @@ public class FlowableUtils {
if (sequenceFlow.getTargetFlowElement() instanceof SubProcess) {
inChildProcess = dirtyTargetInChildProcess(
(FlowElement) (((SubProcess) sequenceFlow.getTargetFlowElement()).getFlowElements()
- .toArray()[0]),
+ .toArray()[0]),
hasSequenceFlow, targets, inChildProcess);
}
// 继续迭代
diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/ModelUtil.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/ModelUtil.java
index 0e2b09758..27395839e 100644
--- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/ModelUtil.java
+++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/utils/ModelUtil.java
@@ -183,8 +183,7 @@ public class ModelUtil {
if (nodeDto.getType() == NodeTypeEnum.EXCLUSIVE_GATEWAY.getValue().intValue()) {
if (ord == size) {
expression = NodeExpressionStrategyFactory.handleDefaultBranch(branchs, ord - 1);
- }
- else if (nodeDto.getType() == NodeTypeEnum.EXCLUSIVE_GATEWAY.getValue().intValue() && ord > 1) {
+ } else if (ord > 1) {
expression = NodeExpressionStrategyFactory.handleDefaultBranch(branchs, ord - 1);
}
else {
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java
index 670bcf3ef..31932bd4b 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowEngineService.java
@@ -3,7 +3,6 @@ package com.pig4cloud.pigx.flow.task.api.feign;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.feign.annotation.NoToken;
import com.pig4cloud.pigx.flow.task.dto.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -49,7 +48,6 @@ public interface RemoteFlowEngineService {
* @param processInstanceParamDto 流程实例参数
* @return 启动流程结果
*/
- @NoToken
@PostMapping("/flow/start")
R startProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto);
@@ -82,8 +80,8 @@ public interface RemoteFlowEngineService {
* @param taskParamDto 任务参数
* @return 设置负责人结果
*/
- @PostMapping("/task/setAssignee")
- R setAssignee(@RequestBody TaskParamDto taskParamDto);
+ @PostMapping("/task/transferTask")
+ R transferTask(@RequestBody TaskParamDto taskParamDto);
/**
* 停止流程实例
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowTaskService.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowTaskService.java
index 856916d51..caf7aadfc 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowTaskService.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/api/feign/RemoteFlowTaskService.java
@@ -2,7 +2,6 @@ package com.pig4cloud.pigx.flow.task.api.feign;
import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.feign.annotation.NoToken;
import com.pig4cloud.pigx.flow.task.dto.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -23,7 +22,6 @@ public interface RemoteFlowTaskService {
* 节点开始事件
* @param nodeRecordParamDto
*/
- @NoToken
@PostMapping("/remote/startNodeEvent")
void startNodeEvent(@RequestBody ProcessNodeRecordParamDto nodeRecordParamDto);
@@ -31,7 +29,6 @@ public interface RemoteFlowTaskService {
* 节点结束事件
* @param nodeRecordParamDto
*/
- @NoToken
@PostMapping("/remote/endNodeEvent")
void endNodeEvent(@RequestBody ProcessNodeRecordParamDto nodeRecordParamDto);
@@ -46,7 +43,6 @@ public interface RemoteFlowTaskService {
* 创建流程事件
* @param processInstanceRecordParamDto
*/
- @NoToken
@PostMapping("/remote/createProcessEvent")
void createProcessEvent(@RequestBody ProcessInstanceRecordParamDto processInstanceRecordParamDto);
@@ -77,7 +73,6 @@ public interface RemoteFlowTaskService {
* @param nodeId 节点id
* @return
*/
- @NoToken
@GetMapping("/processNodeData/getNodeData")
R queryNodeOriData(@RequestParam("flowId") String flowId, @RequestParam("nodeId") String nodeId);
@@ -85,7 +80,6 @@ public interface RemoteFlowTaskService {
* 节点开始指派用户了
* @param processNodeRecordAssignUserParamDto
*/
- @NoToken
@PostMapping("/remote/startAssignUser")
R startAssignUser(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto);
@@ -93,7 +87,6 @@ public interface RemoteFlowTaskService {
* 任务结束事件
* @param processNodeRecordAssignUserParamDto
*/
- @NoToken
@PostMapping("/remote/taskEndEvent")
R taskEndEvent(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto);
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/constant/IBaseEnum.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/constant/IBaseEnum.java
index d2dd795fb..fcf55372f 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/constant/IBaseEnum.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/constant/IBaseEnum.java
@@ -61,8 +61,10 @@ public interface IBaseEnum {
Objects.requireNonNull(label);
EnumSet allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
String finalLabel = label;
- E matchEnum = allEnums.stream().filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel)).findFirst()
- .orElse(null);
+ E matchEnum = allEnums.stream()
+ .filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel))
+ .findFirst()
+ .orElse(null);
Object value = null;
if (matchEnum != null) {
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java
index 36689eeae..7b7448196 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/TaskParamDto.java
@@ -7,53 +7,56 @@ import java.util.Map;
/**
* 任务完成参数对象
- *
*/
@Data
public class TaskParamDto {
- private String processInstanceId;
+ private String processInstanceId;
- private List processInstanceIdList;
+ private List processInstanceIdList;
- /**
- * 节点id
- */
- private String nodeId;
+ /**
+ * 节点id
+ */
+ private String nodeId;
- /**
- * 添加子流程发起人
- */
- private Boolean appendChildProcessRootId;
+ /**
+ * 添加子流程发起人
+ */
+ private Boolean appendChildProcessRootId;
- /**
- * 任务id
- */
- private String taskId;
+ /**
+ * 任务id
+ */
+ private String taskId;
- /**
- * 用户id
- */
- private String userId;
+ /**
+ * 用户id
+ */
+ private String userId;
- /**
- * 模板用户id
- */
- private String targetUserId;
+ /**
+ * 模板用户id
+ */
+ private String targetUserId;
- /**
- * 参数
- */
- private Map paramMap;
+ /**
+ * 参数
+ */
+ private Map paramMap;
- /**
- * 任务本地变量
- */
- private Map taskLocalParamMap;
+ /**
+ * 任务本地变量
+ */
+ private Map taskLocalParamMap;
- /**
- * 模板节点
- */
- private String targetNodeId;
+ /**
+ * 模板节点
+ */
+ private String targetNodeId;
+ /**
+ * 转办目标用户 ID 列表
+ */
+ private List targetUserIdList;
}
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java
index 91bdb23ec..b9afca52f 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java
@@ -2,12 +2,14 @@ package com.pig4cloud.pigx.flow.task.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
+import lombok.experimental.FieldNameConstants;
/**
* 表单
*/
@Data
@NoArgsConstructor
+@FieldNameConstants
public class FormItemVO {
private String id;
@@ -26,10 +28,11 @@ public class FormItemVO {
private String placeholder;
- private Props props;
+ private Props props = new Props();
@Data
@NoArgsConstructor
+ @FieldNameConstants
public static class Props {
private Object value;
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/ProcessVO.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/ProcessVO.java
index 26898351a..7c3efb27b 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/ProcessVO.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/ProcessVO.java
@@ -16,4 +16,9 @@ public class ProcessVO extends Process {
private Map variableMap;
+ /**
+ * 发起人节点的表单权限
+ */
+ private Map formPerms;
+
}
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml
index b012b32f0..4f5f5bbe2 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml
@@ -73,6 +73,11 @@
com.pig4cloud
pigx-common-log
+
+
+ com.pig4cloud
+ pigx-common-encrypt-api
+
com.baomidou
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/config/SequenceConfiguration.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/config/SequenceConfiguration.java
index bb47b816e..47b3cfa25 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/config/SequenceConfiguration.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/config/SequenceConfiguration.java
@@ -28,11 +28,12 @@ public class SequenceConfiguration {
@Bean
public Sequence flowSequence(DataSource dataSource, BaseSequenceProperties properties) {
return DbSeqBuilder.create()
- .bizName(() -> String.format("flow_%s_%s", TenantContextHolder.getTenantId(), DateUtil.today()))
- .dataSource(dataSource)
- .step(properties.getStep())
- .retryTimes(properties.getDb().getRetryTimes())
- .tableName(properties.getDb().getTableName())
- .build();
+ .bizName(() -> String.format("flow_%s_%s", TenantContextHolder.getTenantId(), DateUtil.today()))
+ .dataSource(dataSource)
+ .step(properties.getStep())
+ .retryTimes(properties.getDb().getRetryTimes())
+ .tableName(properties.getDb().getTableName())
+ .build();
}
+
}
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessInstanceController.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessInstanceController.java
index d86a9058c..0509022c0 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessInstanceController.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessInstanceController.java
@@ -1,7 +1,6 @@
package com.pig4cloud.pigx.flow.task.controller;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.flow.task.dto.ProcessInstanceParamDto;
import com.pig4cloud.pigx.flow.task.dto.TaskQueryParamDto;
import com.pig4cloud.pigx.flow.task.service.IProcessInstanceService;
@@ -32,23 +31,11 @@ public class ProcessInstanceController {
}
/**
- * 启动内部流程实例
+ * 查询挖矿任务
*
- * @param processInstanceParamDto 进程实例参数 DTO
+ * @param queryParamDto Query param DTO
* @return {@link R }
*/
- @Inner
- @SneakyThrows
- @PostMapping("startInnerProcessInstance")
- public R startInnerProcessInstance(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
- return processInstanceService.startProcessInstance(processInstanceParamDto);
- }
-
- /**
- * 查询当前登录用户的待办任务
- * @param pageDto
- * @return
- */
@SneakyThrows
@PostMapping("queryMineTask")
public R queryMineTask(@RequestBody TaskQueryParamDto queryParamDto) {
@@ -67,9 +54,10 @@ public class ProcessInstanceController {
}
/**
- * 查询我发起的
- * @param pageDto
- * @return
+ * 查询我已启动
+ *
+ * @param taskQueryParamDto task query param dto
+ * @return {@link R }
*/
@SneakyThrows
@PostMapping("queryMineStarted")
@@ -78,9 +66,10 @@ public class ProcessInstanceController {
}
/**
- * 查询抄送我的
- * @param pageDto
- * @return
+ * 查询我 CC
+ *
+ * @param taskQueryParamDto task query param dto
+ * @return {@link R }
*/
@SneakyThrows
@PostMapping("queryMineCC")
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessNodeDataController.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessNodeDataController.java
index 929ce5c0c..2a5d6dce9 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessNodeDataController.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/ProcessNodeDataController.java
@@ -1,7 +1,6 @@
package com.pig4cloud.pigx.flow.task.controller;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.flow.task.dto.Node;
import com.pig4cloud.pigx.flow.task.dto.ProcessNodeDataDto;
import com.pig4cloud.pigx.flow.task.service.IProcessNodeDataService;
@@ -39,7 +38,6 @@ public class ProcessNodeDataController {
* @param nodeId
* @return
*/
- @Inner
@GetMapping("getNodeData")
public R getNodeData(String flowId, String nodeId) {
return processNodeDataService.getNodeData(flowId, nodeId);
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/RemoteController.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/RemoteController.java
index 07ce38058..6c8a1725d 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/RemoteController.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/controller/RemoteController.java
@@ -1,7 +1,6 @@
package com.pig4cloud.pigx.flow.task.controller;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.flow.task.dto.*;
import com.pig4cloud.pigx.flow.task.service.IRemoteService;
import lombok.RequiredArgsConstructor;
@@ -92,8 +91,7 @@ public class RemoteController {
* @param recordParamDto
* @return
*/
- @Inner
- @PostMapping("/startNodeEvent")
+ @PostMapping("startNodeEvent")
public R startNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
return remoteService.startNodeEvent(recordParamDto);
}
@@ -104,7 +102,6 @@ public class RemoteController {
* @param processInstanceRecordParamDto
* @return
*/
- @Inner
@PostMapping("createProcessEvent")
public R createProcessEvent(@RequestBody ProcessInstanceRecordParamDto processInstanceRecordParamDto) {
return remoteService.createProcessEvent(processInstanceRecordParamDto);
@@ -116,7 +113,6 @@ public class RemoteController {
* @param recordParamDto
* @return
*/
- @Inner
@PostMapping("endNodeEvent")
public R endNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
return remoteService.endNodeEvent(recordParamDto);
@@ -128,7 +124,6 @@ public class RemoteController {
* @param processNodeRecordAssignUserParamDto
* @return
*/
- @Inner
@PostMapping("startAssignUser")
public R startAssignUser(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
return remoteService.startAssignUser(processNodeRecordAssignUserParamDto);
@@ -140,7 +135,6 @@ public class RemoteController {
* @param processNodeRecordAssignUserParamDto
* @return
*/
- @Inner
@PostMapping("taskEndEvent")
public R taskEndEvent(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
return remoteService.taskEndEvent(processNodeRecordAssignUserParamDto);
@@ -148,24 +142,22 @@ public class RemoteController {
/**
* 实例结束
- *
* @param processInstanceParamDto
* @return
*/
@PostMapping("endProcess")
public R endProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
return remoteService.endProcess(processInstanceParamDto.getProcessInstanceId());
- }
+ }
- /**
- * 查询流程管理员
- *
- * @param flowId
- * @return
- */
- @GetMapping("queryProcessAdmin")
- public R queryProcessAdmin(String flowId) {
- return remoteService.queryProcessAdmin(flowId);
- }
+ /**
+ * 查询流程管理员
+ * @param flowId
+ * @return
+ */
+ @GetMapping("queryProcessAdmin")
+ public R queryProcessAdmin(String flowId) {
+ return remoteService.queryProcessAdmin(flowId);
+ }
}
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java
index 54f8cd6d2..066468d15 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/CombinationGroupServiceImpl.java
@@ -39,8 +39,12 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
*/
@Override
public R listGroupWithProcess(Page page, Long groupId) {
- return R.ok(processService.lambdaQuery().eq(Process::getGroupId, groupId).eq(Process::getHidden, false)
- .orderByAsc(Process::getSort).orderByDesc(Process::getCreateTime).page(page));
+ return R.ok(processService.lambdaQuery()
+ .eq(Process::getGroupId, groupId)
+ .eq(Process::getHidden, false)
+ .orderByAsc(Process::getSort)
+ .orderByDesc(Process::getCreateTime)
+ .page(page));
}
/**
@@ -53,16 +57,24 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
List formGroupVos = new LinkedList<>();
- List processGroupList = processGroupService.lambdaQuery().orderByAsc(ProcessGroup::getSort)
- .list();
+ List processGroupList = processGroupService.lambdaQuery()
+ .orderByAsc(ProcessGroup::getSort)
+ .list();
processGroupList.forEach(group -> {
- FormGroupVo formGroupVo = FormGroupVo.builder().id(group.getId()).name(group.getGroupName())
- .items(new LinkedList<>()).build();
+ FormGroupVo formGroupVo = FormGroupVo.builder()
+ .id(group.getId())
+ .name(group.getGroupName())
+ .items(new LinkedList<>())
+ .build();
formGroupVos.add(formGroupVo);
- List processList = processService.lambdaQuery().eq(Process::getGroupId, group.getId())
- .eq(Process::getHidden, YesNoEnum.NO.getCode()).eq(Process::getStop, YesNoEnum.NO.getCode()).orderByAsc(Process::getSort).list();
+ List processList = processService.lambdaQuery()
+ .eq(Process::getGroupId, group.getId())
+ .eq(Process::getHidden, YesNoEnum.NO.getCode())
+ .eq(Process::getStop, YesNoEnum.NO.getCode())
+ .orderByAsc(Process::getSort)
+ .list();
Map existMap = new HashMap<>();
@@ -70,9 +82,10 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
List idList = processList.stream().map(Process::getId).collect(Collectors.toList());
// 查询发起人集合
List processStarterList = processStarterService.lambdaQuery()
- .in(ProcessStarter::getProcessId, idList).list();
+ .in(ProcessStarter::getProcessId, idList)
+ .list();
Map> groupmap = processStarterList.stream()
- .collect(Collectors.groupingBy(ProcessStarter::getProcessId));
+ .collect(Collectors.groupingBy(ProcessStarter::getProcessId));
for (Process process : processList) {
List processStarters = groupmap.get(process.getId());
@@ -80,15 +93,17 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
existMap.put(process.getId(), true);
continue;
}
- boolean match = processStarters.stream().anyMatch(w -> w.getTypeId().longValue() == user.getId()
- && w.getType().equals(NodeUserTypeEnum.USER.getKey()));
+ boolean match = processStarters.stream()
+ .anyMatch(w -> w.getTypeId().longValue() == user.getId()
+ && w.getType().equals(NodeUserTypeEnum.USER.getKey()));
if (match) {
existMap.put(process.getId(), true);
continue;
}
Set deptIdSet = processStarters.stream()
- .filter(w -> w.getType().equals(NodeUserTypeEnum.DEPT.getKey())).map(w -> w.getTypeId())
- .collect(Collectors.toSet());
+ .filter(w -> w.getType().equals(NodeUserTypeEnum.DEPT.getKey()))
+ .map(w -> w.getTypeId())
+ .collect(Collectors.toSet());
existMap.put(process.getId(), deptIdSet.contains(user.getDeptId()));
@@ -103,9 +118,14 @@ public class CombinationGroupServiceImpl implements ICombinationGroupService {
}
formGroupVo.getItems()
- .add(FormGroupVo.FlowVo.builder().flowId(process.getFlowId()).name(process.getName())
- .logo(process.getLogo()).remark(process.getRemark()).stop(process.getStop())
- .updated(process.getUpdateTime()).build());
+ .add(FormGroupVo.FlowVo.builder()
+ .flowId(process.getFlowId())
+ .name(process.getName())
+ .logo(process.getLogo())
+ .remark(process.getRemark())
+ .stop(process.getStop())
+ .updated(process.getUpdateTime())
+ .build());
});
});
return R.ok(formGroupVos);
diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java
index 2a3c56242..22f354284 100644
--- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java
+++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java
@@ -1,15 +1,9 @@
package com.pig4cloud.pigx.flow.task.service.impl;
-import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict;
-import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pig4cloud.pigx.common.core.util.R;
-import com.pig4cloud.pigx.flow.task.constant.FormTypeEnum;
-import com.pig4cloud.pigx.flow.task.constant.ProcessInstanceConstant;
import com.pig4cloud.pigx.flow.task.dto.Node;
import com.pig4cloud.pigx.flow.task.entity.Process;
import com.pig4cloud.pigx.flow.task.entity.ProcessCopy;
@@ -17,13 +11,10 @@ import com.pig4cloud.pigx.flow.task.mapper.ProcessCopyMapper;
import com.pig4cloud.pigx.flow.task.service.IProcessCopyService;
import com.pig4cloud.pigx.flow.task.service.IProcessNodeDataService;
import com.pig4cloud.pigx.flow.task.service.IProcessService;
-import com.pig4cloud.pigx.flow.task.vo.FormItemVO;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
/**
@@ -38,86 +29,39 @@ import java.util.Map;
@RequiredArgsConstructor
public class ProcessCopyServiceImpl extends ServiceImpl implements IProcessCopyService {
- private final ObjectMapper objectMapper;
+ private final ObjectMapper objectMapper;
- private final IProcessService processService;
+ private final IProcessService processService;
- private final IProcessNodeDataService nodeDataService;
+ private final IProcessNodeDataService nodeDataService;
- /**
- * 查询单个抄送详细信息
- * @param id
- * @return
- */
- @SneakyThrows
- @Override
- public R querySingleDetail(long id) {
- ProcessCopy processCopy = this.getById(id);
- String flowId = processCopy.getFlowId();
- Process oaForms = processService.getByFlowId(flowId);
- if (oaForms == null) {
- return R.failed("流程不存在");
- }
- String formData = processCopy.getFormData();
+ /**
+ * 查询单个抄送详细信息
+ *
+ * @param id
+ * @return
+ */
+ @SneakyThrows
+ @Override
+ public R querySingleDetail(long id) {
+ ProcessCopy processCopy = this.getById(id);
+ String flowId = processCopy.getFlowId();
+ Process oaForms = processService.getByFlowId(flowId);
+ if (oaForms == null) {
+ return R.failed("流程不存在");
+ }
+ String formData = processCopy.getFormData();
+ String nodeId = processCopy.getNodeId();
- Map variableMap = objectMapper.readValue(formData, new TypeReference