mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-11 05:19:00 +08:00
feat(flow): 适配 form-design 表单设计器
This commit is contained in:
1 parent
11d2262b8c
commit
a63d66f291
17 files changed
+208
-259
No files matched your search
-2
@@ -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());
|
||||
|
||||
+13
-4
@@ -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<String, NodeConditionStrategy> nodeConditionStrategyMap = SpringUtil
|
||||
.getBeansOfType(NodeConditionStrategy.class);
|
||||
NodeConditionStrategy nodeConditionHandler = nodeConditionStrategyMap
|
||||
.get(nodeConditionDto.getKeyType() + "NodeConditionStrategy");
|
||||
if (nodeConditionHandler == null) {
|
||||
|
||||
// 通过keyType获取对应的处理器, 忽略大小写
|
||||
AtomicReference<NodeConditionStrategy> 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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* 字符类型处理器
|
||||
*/
|
||||
@Component("DateNodeConditionStrategy")
|
||||
@Component("datePickerNodeConditionStrategy")
|
||||
public class DateNodeConditionStrategy implements NodeConditionStrategy {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* 字符类型处理器
|
||||
*/
|
||||
@Component("InputNodeConditionStrategy")
|
||||
@Component("inputNodeConditionStrategy")
|
||||
public class InputNodeConditionStrategy implements NodeConditionStrategy {
|
||||
|
||||
/**
|
||||
|
||||
-28
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* 字符类型处理器
|
||||
*/
|
||||
@Component("NumberNodeConditionStrategy")
|
||||
@Component("inputNumberNodeConditionStrategy")
|
||||
public class NumberNodeConditionStrategy implements NodeConditionStrategy {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* 字符类型处理器
|
||||
*/
|
||||
@Component("TimeNodeConditionStrategy")
|
||||
@Component("timePickerNodeConditionStrategy")
|
||||
public class TimeNodeConditionStrategy implements NodeConditionStrategy {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -184,7 +184,7 @@ public class ModelUtil {
|
||||
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 {
|
||||
|
||||
-2
@@ -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<String> startProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto);
|
||||
|
||||
|
||||
-7
@@ -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);
|
||||
|
||||
@@ -47,7 +44,6 @@ public interface RemoteFlowTaskService {
|
||||
* 创建流程事件
|
||||
* @param processInstanceRecordParamDto
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/remote/createProcessEvent")
|
||||
void createProcessEvent(@RequestBody ProcessInstanceRecordParamDto processInstanceRecordParamDto);
|
||||
|
||||
@@ -78,7 +74,6 @@ public interface RemoteFlowTaskService {
|
||||
* @param nodeId 节点id
|
||||
* @return
|
||||
*/
|
||||
@NoToken
|
||||
@GetMapping("/processNodeData/getNodeData")
|
||||
R<Node> queryNodeOriData(@RequestParam("flowId") String flowId, @RequestParam("nodeId") String nodeId);
|
||||
|
||||
@@ -86,7 +81,6 @@ public interface RemoteFlowTaskService {
|
||||
* 节点开始指派用户了
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/remote/startAssignUser")
|
||||
R startAssignUser(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto);
|
||||
|
||||
@@ -94,7 +88,6 @@ public interface RemoteFlowTaskService {
|
||||
* 任务结束事件
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/remote/taskEndEvent")
|
||||
R taskEndEvent(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto);
|
||||
|
||||
|
||||
+5
@@ -16,4 +16,9 @@ public class ProcessVO extends Process {
|
||||
|
||||
private Map<String, Object> variableMap;
|
||||
|
||||
/**
|
||||
* 发起人节点的表单权限
|
||||
*/
|
||||
private Map<String,String> formPerms;
|
||||
|
||||
}
|
||||
+10
-21
@@ -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")
|
||||
|
||||
-2
@@ -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<Node> getNodeData(String flowId, String nodeId) {
|
||||
return processNodeDataService.getNodeData(flowId, nodeId);
|
||||
|
||||
+118
-138
@@ -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;
|
||||
@@ -18,155 +17,136 @@ import java.util.Map;
|
||||
@RequestMapping("/remote")
|
||||
public class RemoteController {
|
||||
|
||||
private final IRemoteService remoteService;
|
||||
private final IRemoteService remoteService;
|
||||
|
||||
/**
|
||||
* 根据角色id集合查询用户id集合
|
||||
*
|
||||
* @param roleIdList
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("queryUserIdListByRoleIdList")
|
||||
public R<List<Long>> queryUserIdListByRoleIdList(@RequestBody List<Long> roleIdList) {
|
||||
return remoteService.queryUserIdListByRoleIdList(roleIdList);
|
||||
}
|
||||
/**
|
||||
* 根据角色id集合查询用户id集合
|
||||
* @param roleIdList
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("queryUserIdListByRoleIdList")
|
||||
public R<List<Long>> queryUserIdListByRoleIdList(@RequestBody List<Long> roleIdList) {
|
||||
return remoteService.queryUserIdListByRoleIdList(roleIdList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存抄送
|
||||
*
|
||||
* @param copyDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("savecc")
|
||||
public R saveCC(@RequestBody ProcessCopyDto copyDto) {
|
||||
return remoteService.saveCC(copyDto);
|
||||
}
|
||||
/**
|
||||
* 保存抄送
|
||||
* @param copyDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("savecc")
|
||||
public R saveCC(@RequestBody ProcessCopyDto copyDto) {
|
||||
return remoteService.saveCC(copyDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否是所有的父级
|
||||
*
|
||||
* @param checkParentDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("checkIsAllParent")
|
||||
public R<Boolean> checkIsAllParent(@RequestBody CheckParentDto checkParentDto) {
|
||||
return remoteService.checkIsAllParent(checkParentDto);
|
||||
}
|
||||
/**
|
||||
* 检查是否是所有的父级
|
||||
* @param checkParentDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("checkIsAllParent")
|
||||
public R<Boolean> checkIsAllParent(@RequestBody CheckParentDto checkParentDto) {
|
||||
return remoteService.checkIsAllParent(checkParentDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据部门id集合查询用户id集合
|
||||
*
|
||||
* @param depIdList
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("queryUserIdListByDepIdList")
|
||||
public R<List<Long>> queryUserIdListByDepIdList(@RequestBody List<Long> depIdList) {
|
||||
return remoteService.queryUserIdListByDepIdList(depIdList);
|
||||
}
|
||||
/**
|
||||
* 根据部门id集合查询用户id集合
|
||||
* @param depIdList
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("queryUserIdListByDepIdList")
|
||||
public R<List<Long>> queryUserIdListByDepIdList(@RequestBody List<Long> depIdList) {
|
||||
return remoteService.queryUserIdListByDepIdList(depIdList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否是所有的子级
|
||||
*
|
||||
* @param checkChildDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("checkIsAllChild")
|
||||
public R<Boolean> checkIsAllChild(@RequestBody CheckChildDto checkChildDto) {
|
||||
return remoteService.checkIsAllChild(checkChildDto);
|
||||
}
|
||||
/**
|
||||
* 检查是否是所有的子级
|
||||
* @param checkChildDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("checkIsAllChild")
|
||||
public R<Boolean> checkIsAllChild(@RequestBody CheckChildDto checkChildDto) {
|
||||
return remoteService.checkIsAllChild(checkChildDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户的信息-包括扩展字段
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("queryUserAllInfo")
|
||||
public R<Map<String, Object>> queryUserAllInfo(long userId) {
|
||||
return remoteService.queryUserAllInfo(userId);
|
||||
}
|
||||
/**
|
||||
* 获取用户的信息-包括扩展字段
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("queryUserAllInfo")
|
||||
public R<Map<String, Object>> queryUserAllInfo(long userId) {
|
||||
return remoteService.queryUserAllInfo(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始节点事件
|
||||
*
|
||||
* @param recordParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("/startNodeEvent")
|
||||
public R startNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
|
||||
return remoteService.startNodeEvent(recordParamDto);
|
||||
}
|
||||
/**
|
||||
* 开始节点事件
|
||||
* @param recordParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("startNodeEvent")
|
||||
public R startNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
|
||||
return remoteService.startNodeEvent(recordParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程创建了
|
||||
*
|
||||
* @param processInstanceRecordParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("createProcessEvent")
|
||||
public R createProcessEvent(@RequestBody ProcessInstanceRecordParamDto processInstanceRecordParamDto) {
|
||||
return remoteService.createProcessEvent(processInstanceRecordParamDto);
|
||||
}
|
||||
/**
|
||||
* 流程创建了
|
||||
* @param processInstanceRecordParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("createProcessEvent")
|
||||
public R createProcessEvent(@RequestBody ProcessInstanceRecordParamDto processInstanceRecordParamDto) {
|
||||
return remoteService.createProcessEvent(processInstanceRecordParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束节点事件
|
||||
*
|
||||
* @param recordParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("endNodeEvent")
|
||||
public R endNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
|
||||
return remoteService.endNodeEvent(recordParamDto);
|
||||
}
|
||||
/**
|
||||
* 结束节点事件
|
||||
* @param recordParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("endNodeEvent")
|
||||
public R endNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto) {
|
||||
return remoteService.endNodeEvent(recordParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始设置执行人
|
||||
*
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("startAssignUser")
|
||||
public R startAssignUser(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
|
||||
return remoteService.startAssignUser(processNodeRecordAssignUserParamDto);
|
||||
}
|
||||
/**
|
||||
* 开始设置执行人
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("startAssignUser")
|
||||
public R startAssignUser(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
|
||||
return remoteService.startAssignUser(processNodeRecordAssignUserParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务结束事件
|
||||
*
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("taskEndEvent")
|
||||
public R taskEndEvent(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
|
||||
return remoteService.taskEndEvent(processNodeRecordAssignUserParamDto);
|
||||
}
|
||||
/**
|
||||
* 任务结束事件
|
||||
* @param processNodeRecordAssignUserParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("taskEndEvent")
|
||||
public R taskEndEvent(@RequestBody ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) {
|
||||
return remoteService.taskEndEvent(processNodeRecordAssignUserParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实例结束
|
||||
*
|
||||
* @param processInstanceParamDto
|
||||
* @return
|
||||
*/
|
||||
@Inner
|
||||
@PostMapping("endProcess")
|
||||
public R endProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
|
||||
return remoteService.endProcess(processInstanceParamDto.getProcessInstanceId());
|
||||
}
|
||||
/**
|
||||
* 实例结束
|
||||
* @param processInstanceParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("endProcess")
|
||||
public R endProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
|
||||
return remoteService.endProcess(processInstanceParamDto.getProcessInstanceId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程管理员
|
||||
*
|
||||
* @param flowId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("queryProcessAdmin")
|
||||
public R<Long> queryProcessAdmin(String flowId) {
|
||||
return remoteService.queryProcessAdmin(flowId);
|
||||
}
|
||||
/**
|
||||
* 查询流程管理员
|
||||
* @param flowId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("queryProcessAdmin")
|
||||
public R<Long> queryProcessAdmin(String flowId) {
|
||||
return remoteService.queryProcessAdmin(flowId);
|
||||
}
|
||||
|
||||
}
|
||||
+46
-48
@@ -64,18 +64,16 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
|
||||
*/
|
||||
@Override
|
||||
public R startProcessInstance(ProcessInstanceParamDto processInstanceParamDto) {
|
||||
// 如果没有传递根节点(发起人),则根据当前用户初始化一个
|
||||
if (StrUtil.isBlank(processInstanceParamDto.getStartUserId())) {
|
||||
PigxUser user = SecurityUtils.getUser();
|
||||
processInstanceParamDto.setStartUserId(String.valueOf(user.getId()));
|
||||
Map<String, Object> paramMap = processInstanceParamDto.getParamMap();
|
||||
Dict rootUser = Dict.create()
|
||||
.set("id", user.getId())
|
||||
.set("name", user.getUsername())
|
||||
.set("type", NodeUserTypeEnum.USER.getKey());
|
||||
paramMap.put("root", CollUtil.newArrayList(rootUser));
|
||||
}
|
||||
|
||||
PigxUser user = SecurityUtils.getUser();
|
||||
|
||||
processInstanceParamDto.setStartUserId(String.valueOf(user.getId()));
|
||||
Map<String, Object> paramMap = processInstanceParamDto.getParamMap();
|
||||
Dict rootUser = Dict.create()
|
||||
.set("id", user.getId())
|
||||
.set("name", user.getUsername())
|
||||
.set("type", NodeUserTypeEnum.USER.getKey());
|
||||
paramMap.put("root", CollUtil.newArrayList(rootUser));
|
||||
return flowEngineService.startProcess(processInstanceParamDto);
|
||||
}
|
||||
|
||||
@@ -88,52 +86,52 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
|
||||
@Override
|
||||
public R queryMineTask(TaskQueryParamDto taskQueryParamDto) {
|
||||
taskQueryParamDto.setAssign(SecurityUtils.getUser().getId().toString());
|
||||
R<Page<TaskDto>> r = flowEngineService.queryAssignTask(taskQueryParamDto);
|
||||
R<Page<TaskDto>> r = flowEngineService.queryAssignTask(taskQueryParamDto);
|
||||
|
||||
if (CollUtil.isEmpty(r.getData().getRecords())) {
|
||||
return r;
|
||||
}
|
||||
if (CollUtil.isEmpty(r.getData().getRecords())) {
|
||||
return r;
|
||||
}
|
||||
|
||||
Set<String> processInstanceIdSet = r.getData()
|
||||
.getRecords()
|
||||
.stream()
|
||||
.map(TaskDto::getProcessInstanceId)
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> processInstanceIdSet = r.getData()
|
||||
.getRecords()
|
||||
.stream()
|
||||
.map(TaskDto::getProcessInstanceId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 流程实例记录
|
||||
List<ProcessInstanceRecord> processInstanceRecordList = processInstanceRecordService.lambdaQuery()
|
||||
.in(ProcessInstanceRecord::getProcessInstanceId, processInstanceIdSet)
|
||||
.list();
|
||||
|
||||
// 发起人
|
||||
// 发起人
|
||||
// 发起人
|
||||
List<Long> collect = processInstanceRecordList.stream().map(ProcessInstanceRecord::getUserId).collect(Collectors.toList());
|
||||
List<SysUser> startUserList = userService.getUserById(collect).getData();
|
||||
|
||||
Page<TaskDto> pageResultDto = r.getData();
|
||||
List<TaskDto> taskDtoList = new ArrayList<>();
|
||||
for (TaskDto record : r.getData().getRecords()) {
|
||||
ProcessInstanceRecord processInstanceRecord = processInstanceRecordList.stream()
|
||||
.filter(w -> StrUtil.equals(w.getProcessInstanceId(), record.getProcessInstanceId()))
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
Page<TaskDto> pageResultDto = r.getData();
|
||||
List<TaskDto> taskDtoList = new ArrayList<>();
|
||||
for (TaskDto record : r.getData().getRecords()) {
|
||||
ProcessInstanceRecord processInstanceRecord = processInstanceRecordList.stream()
|
||||
.filter(w -> StrUtil.equals(w.getProcessInstanceId(), record.getProcessInstanceId()))
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
|
||||
if (processInstanceRecord != null) {
|
||||
record.setProcessName(processInstanceRecord.getName());
|
||||
SysUser startUser = startUserList.stream()
|
||||
.filter(w -> w.getUserId().longValue() == processInstanceRecord.getUserId())
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
if (processInstanceRecord != null) {
|
||||
record.setProcessName(processInstanceRecord.getName());
|
||||
SysUser startUser = startUserList.stream()
|
||||
.filter(w -> w.getUserId().longValue() == processInstanceRecord.getUserId())
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
|
||||
record.setRootUserId(processInstanceRecord.getUserId());
|
||||
record.setGroupName(processInstanceRecord.getGroupName());
|
||||
record.setRootUserName(startUser.getUsername());
|
||||
record.setRootUserAvatarUrl(startUser.getAvatar());
|
||||
record.setStartTime(processInstanceRecord.getCreateTime());
|
||||
record.setRootUserId(processInstanceRecord.getUserId());
|
||||
record.setGroupName(processInstanceRecord.getGroupName());
|
||||
record.setRootUserName(startUser.getUsername());
|
||||
record.setRootUserAvatarUrl(startUser.getAvatar());
|
||||
record.setStartTime(processInstanceRecord.getCreateTime());
|
||||
|
||||
taskDtoList.add(record);
|
||||
}
|
||||
}
|
||||
taskDtoList.add(record);
|
||||
}
|
||||
}
|
||||
|
||||
pageResultDto.setRecords(taskDtoList);
|
||||
|
||||
@@ -162,10 +160,10 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
|
||||
.map(TaskDto::getProcessInstanceId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 流程实例记录
|
||||
List<ProcessInstanceRecord> processInstanceRecordList = processInstanceRecordService.lambdaQuery()
|
||||
.in(ProcessInstanceRecord::getProcessInstanceId, processInstanceIdSet)
|
||||
.list();
|
||||
// 流程实例记录
|
||||
List<ProcessInstanceRecord> processInstanceRecordList = processInstanceRecordService.lambdaQuery()
|
||||
.in(ProcessInstanceRecord::getProcessInstanceId, processInstanceIdSet)
|
||||
.list();
|
||||
|
||||
// 发起人
|
||||
List<Long> collect = processInstanceRecordList.stream().map(ProcessInstanceRecord::getUserId).collect(Collectors.toList());
|
||||
@@ -198,9 +196,9 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
|
||||
}
|
||||
}
|
||||
|
||||
pageResultDto.setRecords(taskDtoList);
|
||||
pageResultDto.setRecords(taskDtoList);
|
||||
|
||||
return R.ok(pageResultDto);
|
||||
return R.ok(pageResultDto);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
@@ -79,6 +79,7 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
||||
ProcessVO processVO = BeanUtil.copyProperties(oaForms, ProcessVO.class);
|
||||
processVO.setSelectUserNodeId(selectUserNodeId);
|
||||
processVO.setFormItems(formItems);
|
||||
processVO.setFormPerms(startNode.getFormPerms());
|
||||
return processVO;
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.pig4cloud.pigx.admin.api.entity.SysUser;
|
||||
import com.pig4cloud.pigx.admin.api.feign.RemoteUserService;
|
||||
import com.pig4cloud.pigx.common.core.util.RetOps;
|
||||
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
|
||||
import com.pig4cloud.pigx.flow.task.constant.NodeStatusEnum;
|
||||
import com.pig4cloud.pigx.flow.task.constant.NodeTypeEnum;
|
||||
@@ -101,12 +102,16 @@ public class NodeFormatUtil {
|
||||
List<ProcessNodeRecordAssignUser> value = entry.getValue();
|
||||
List<UserVo> collect = value.stream().map(w -> {
|
||||
UserVo userVo = buildUser(Long.parseLong(w.getUserId()));
|
||||
if (userVo == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
userVo.setShowTime(w.getEndTime());
|
||||
userVo.setApproveDesc(w.getApproveDesc());
|
||||
userVo.setStatus(w.getStatus());
|
||||
userVo.setOperType(w.getTaskType());
|
||||
return userVo;
|
||||
}).toList();
|
||||
}).filter(Objects::nonNull).toList();
|
||||
userVoList.addAll(collect);
|
||||
}
|
||||
|
||||
@@ -257,7 +262,10 @@ public class NodeFormatUtil {
|
||||
}
|
||||
|
||||
RemoteUserService userService = SpringUtil.getBean(RemoteUserService.class);
|
||||
SysUser user = userService.getUserById(CollUtil.newArrayList(userId)).getData().get(0);
|
||||
SysUser user = RetOps.of(userService.getUserById(CollUtil.newArrayList(userId)))
|
||||
.getData()
|
||||
.map(sysUsers -> sysUsers.isEmpty() ? null : sysUsers.get(0))
|
||||
.orElse(null);
|
||||
if (user == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user