update 流程节点绑定审批人
This commit is contained in:
+36
-74
@@ -5,22 +5,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.DictPoint;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeOrigin;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeOriginService;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import com.jero.modules.laws.common.constant.ResultCommon;
|
||||
import io.swagger.annotations.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.BpmnModel;
|
||||
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.repository.Deployment;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.activiti.engine.repository.ProcessDefinitionQuery;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
@@ -32,7 +32,6 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -57,53 +56,11 @@ public class ActivitiController {
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginService processNodeOriginService;
|
||||
private ProcessNodeService processNodeService;
|
||||
@Resource
|
||||
private LawsProcessNodeService processNodeService;
|
||||
@ApiOperation(value="部署流程图")
|
||||
@GetMapping("/deploy")
|
||||
public Result<Map<String, String>> deploy(@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "classpathResource") String classpathResource,
|
||||
@RequestParam(value = "resourceName") String resourceName,
|
||||
@RequestPart(value = "files", required = false) MultipartFile file) {
|
||||
if (StringUtils.isBlank(name)) {
|
||||
//根据流程定义Key查询
|
||||
name = "出差申请流程";
|
||||
}
|
||||
|
||||
// 3、使用RepositoryService进行部署
|
||||
Deployment deployment = null;
|
||||
try {
|
||||
deployment = repositoryService.createDeployment()
|
||||
//.addClasspathResource("bpmn/diagram_1.bpmn20.xml") // 添加bpmn资源
|
||||
//.addClasspathResource("bpmn/business-trips.png") // 添加png资源
|
||||
//.addClasspathResource(classpathResource)
|
||||
.addInputStream(resourceName, file.getInputStream())
|
||||
.disableSchemaValidation()
|
||||
.key(name)
|
||||
.name(name)
|
||||
.deploy();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 4、输出部署信息
|
||||
Map<String, String> map = new HashMap<>();
|
||||
|
||||
map.put("流程部署id:", deployment.getId());
|
||||
map.put("流程部署名称:", deployment.getName());
|
||||
map.put("流程部署key:", deployment.getKey());
|
||||
|
||||
//创建一个流程定义查询
|
||||
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
|
||||
processDefinitionQuery.deploymentId(deployment.getId());
|
||||
ProcessDefinition processDefinition = processDefinitionQuery.singleResult();
|
||||
String processDefinitionId = processDefinition.getId();
|
||||
map.put("流程定义Id:", processDefinitionId);
|
||||
|
||||
return Result.OK(map);
|
||||
}
|
||||
private ProcessModelNodeService modelNodeService;
|
||||
@Resource
|
||||
private ProcessNodeLinkService processNodeLinkService;
|
||||
|
||||
@ApiOperation(value="启动流程")
|
||||
@PostMapping("/start")
|
||||
@@ -114,7 +71,7 @@ public class ActivitiController {
|
||||
// 2、获取RunTimeService
|
||||
RuntimeService runtimeService = processEngine.getRuntimeService();
|
||||
|
||||
// 3、根据流程定义Id启动流程
|
||||
// 3、根据流程key启动流程
|
||||
ProcessInstance processInstance = runtimeService
|
||||
.startProcessInstanceByKey(key, map);
|
||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||
@@ -125,25 +82,6 @@ public class ActivitiController {
|
||||
map1.put("流程实例id:", processInstance.getId());
|
||||
map1.put("当前活动Id:", processInstance.getActivityId());
|
||||
|
||||
//从流程节点源表中保存一份流程节点信息到流程节点表
|
||||
LambdaQueryWrapper<ProcessNodeOrigin> processNodeOriginLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
processNodeOriginLambdaQueryWrapper.eq(ProcessNodeOrigin::getNodeType,"userTask")
|
||||
.orderByAsc(ProcessNodeOrigin::getSort);
|
||||
|
||||
List<ProcessNodeOrigin> processNodeOrigins = processNodeOriginService.list(processNodeOriginLambdaQueryWrapper);
|
||||
List<ProcessNode> processNodes = new ArrayList<>();
|
||||
for (ProcessNodeOrigin processNodeOrigin : processNodeOrigins) {
|
||||
ProcessNode processNode = new ProcessNode();
|
||||
BeanUtils.copyProperties(processNodeOrigin, processNode);
|
||||
processNode.setId(null);
|
||||
processNodes.add(processNode);
|
||||
}
|
||||
processNodeService.saveBatch(processNodes);
|
||||
for (ProcessNode processNode : processNodes) {
|
||||
if (processNode.getNodeName().equals("填写基本信息,在线编辑,分发其他起草人")) {
|
||||
//todo 关联关系
|
||||
}
|
||||
}
|
||||
String mainDrafter = map.get("mainDrafter").toString();
|
||||
|
||||
return Result.OK(map1);
|
||||
@@ -333,4 +271,28 @@ public class ActivitiController {
|
||||
LanguageEnum language = MessageUtils.getLanguage();
|
||||
return Result.OK(msg1 + "\n" + msg2);
|
||||
}
|
||||
@DictPoint
|
||||
@GetMapping("/getNodeList")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "processDefinitionId", value = "流程定义id"),
|
||||
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id(这个参数会去查绑定好的用户)")
|
||||
})
|
||||
@ApiOperation("获得节点列表")
|
||||
public Result<List<ProcessNode>> getNodeList(String processDefinitionId,String processInstanceId) {
|
||||
//查询节点信息
|
||||
|
||||
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId,processInstanceId);
|
||||
return Result.OK(nodeList);
|
||||
}
|
||||
|
||||
@PostMapping("/saveNodeUserLink")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "processDefinitionId", value = "流程定义id"),
|
||||
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id")
|
||||
})
|
||||
@ApiOperation("保存节点用户关系")
|
||||
public Result<String> saveNodeUserLink(String processDefinitionId,String processInstanceId,@RequestBody Map<String,Object> map) {
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId,processInstanceId,map);
|
||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||
}
|
||||
}
|
||||
|
||||
+6
-49
@@ -10,7 +10,7 @@ import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.listener.CompleteListener;
|
||||
import com.jero.modules.activiti.listener.CreateListener;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeOriginService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||
import com.jero.modules.activiti.util.CreatedTools;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
@@ -35,11 +35,8 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
@@ -61,7 +58,7 @@ public class ModelerController {
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginService processNodeOriginService;
|
||||
private ProcessNodeService processNodeService;
|
||||
@Resource
|
||||
private ProcessModelNodeService processModelNodeService;
|
||||
//@Autowired
|
||||
@@ -102,12 +99,12 @@ public class ModelerController {
|
||||
ActivitiListener createListener = new ActivitiListener();
|
||||
createListener.setEvent(TaskListener.EVENTNAME_CREATE);
|
||||
createListener.setImplementationType("class");
|
||||
createListener.setImplementation(CreateListener.class.toString());
|
||||
createListener.setImplementation(CreateListener.class.getName());
|
||||
taskListeners.add(createListener);
|
||||
ActivitiListener completeListener = new ActivitiListener();
|
||||
completeListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
|
||||
completeListener.setImplementationType("class");
|
||||
completeListener.setImplementation(CompleteListener.class.toString());
|
||||
completeListener.setImplementation(CompleteListener.class.getName());
|
||||
taskListeners.add(completeListener);
|
||||
userTask.setTaskListeners(taskListeners);
|
||||
}
|
||||
@@ -119,47 +116,6 @@ public class ModelerController {
|
||||
return Result.OK(modelId);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新建模板")
|
||||
@ApiImplicitParam(name = "category_id", value = "类型id")
|
||||
@SuppressWarnings("deprecation")
|
||||
@GetMapping("/create")
|
||||
public void newModel(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
// 初始化一个空模型
|
||||
Model model = repositoryService.newModel();
|
||||
|
||||
// 设置一些默认信息
|
||||
String name = "";
|
||||
String description = "";
|
||||
int revision = 1;
|
||||
String key = "m_" + CreatedTools.getCreated();
|
||||
// 设置子系统
|
||||
//model.setTenantId("子系统1");
|
||||
//model.setCategory(category_id);
|
||||
|
||||
ObjectNode modelNode = objectMapper.createObjectNode();
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);
|
||||
|
||||
model.setName(name);
|
||||
model.setKey(key);
|
||||
model.setMetaInfo(modelNode.toString());
|
||||
|
||||
repositoryService.saveModel(model);
|
||||
String id = model.getId();
|
||||
|
||||
// 完善ModelEditorSource
|
||||
ObjectNode editorNode = objectMapper.createObjectNode();
|
||||
editorNode.put("id", "canvas");
|
||||
editorNode.put("resourceId", "canvas");
|
||||
ObjectNode stencilSetNode = objectMapper.createObjectNode();
|
||||
stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
|
||||
editorNode.put("stencilset", stencilSetNode);
|
||||
repositoryService.addModelEditorSource(id, editorNode.toString().getBytes("utf-8"));
|
||||
response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + id);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "模板列表")
|
||||
@ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "名称"),
|
||||
@ApiImplicitParam(name = "category", value = "类型") })
|
||||
@@ -281,7 +237,8 @@ public class ModelerController {
|
||||
processDefinitionQuery.deploymentId(deployment.getId());
|
||||
ProcessDefinition processDefinition = processDefinitionQuery.singleResult();
|
||||
String processDefinitionId = processDefinition.getId();
|
||||
processNodeOriginService.copyNodeFromModel(modelId,processDefinitionId);
|
||||
processNodeService.copyNodeFromModel(modelId,processDefinitionId);
|
||||
|
||||
// 4、输出部署信息
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("流程部署id:", deployment.getId());
|
||||
|
||||
@@ -12,13 +12,13 @@ import lombok.Data;
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-10-08 18:01
|
||||
*@date 2023-10-16 10:09
|
||||
*/
|
||||
|
||||
/**
|
||||
* 流程节点加签表
|
||||
* 流程模型节点表
|
||||
*/
|
||||
@ApiModel(description = "流程节点加签表")
|
||||
@ApiModel(description = "流程模型节点表")
|
||||
@Data
|
||||
@TableName(value = "process_model_node")
|
||||
public class ProcessModelNode {
|
||||
@@ -78,6 +78,20 @@ public class ProcessModelNode {
|
||||
@ApiModelProperty(value = "xml目标节点id")
|
||||
private String xmlTargetRef;
|
||||
|
||||
/**
|
||||
* 变量类型
|
||||
*/
|
||||
@TableField(value = "variable_type")
|
||||
@ApiModelProperty(value = "变量类型")
|
||||
private String variableType;
|
||||
|
||||
/**
|
||||
* 变量名称
|
||||
*/
|
||||
@TableField(value = "variable_name")
|
||||
@ApiModelProperty(value = "变量名称")
|
||||
private String variableName;
|
||||
|
||||
/**
|
||||
* 是否审批节点
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
@@ -40,18 +41,18 @@ public class ProcessNode {
|
||||
private String nodeName;
|
||||
|
||||
/**
|
||||
* 是否审批节点
|
||||
* 变量类型
|
||||
*/
|
||||
@TableField(value = "is_approval_node")
|
||||
@ApiModelProperty(value = "是否审批节点")
|
||||
private Integer isApprovalNode;
|
||||
@TableField(value = "variable_type")
|
||||
@ApiModelProperty(value = "变量类型")
|
||||
private String variableType;
|
||||
|
||||
/**
|
||||
* 是否可删除
|
||||
* 变量名称
|
||||
*/
|
||||
@TableField(value = "is_can_deleted")
|
||||
@ApiModelProperty(value = "是否可删除")
|
||||
private Integer isCanDeleted;
|
||||
@TableField(value = "variable_name")
|
||||
@ApiModelProperty(value = "变量名称")
|
||||
private String variableName;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
@@ -94,4 +95,9 @@ public class ProcessNode {
|
||||
@TableField(value = "sys_code")
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "关联用户id")
|
||||
@Dict(dictTable = "sys_user",dicText = "realname",dicCode = "id")
|
||||
private String linkUserIds;
|
||||
}
|
||||
@@ -9,11 +9,15 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*流程节点关联用户部门表
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*@date 2023-10-16 13:43
|
||||
*/
|
||||
@ApiModel(description = "流程节点关联用户部门表")
|
||||
|
||||
/**
|
||||
* 流程实例节点关联用户表
|
||||
*/
|
||||
@ApiModel(description = "流程实例节点关联用户表")
|
||||
@Data
|
||||
@TableName(value = "process_node_link")
|
||||
public class ProcessNodeLink {
|
||||
@@ -24,6 +28,13 @@ public class ProcessNodeLink {
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 流程定义id
|
||||
*/
|
||||
@TableField(value = "process_definition_id")
|
||||
@ApiModelProperty(value = "流程定义id")
|
||||
private String processDefinitionId;
|
||||
|
||||
/**
|
||||
* 流程节点id
|
||||
*/
|
||||
@@ -32,16 +43,16 @@ public class ProcessNodeLink {
|
||||
private String processNodeId;
|
||||
|
||||
/**
|
||||
* 类型(1-用户、2-部门)
|
||||
* 流程实例id
|
||||
*/
|
||||
@TableField(value = "`type`")
|
||||
@ApiModelProperty(value = "类型(1-用户、2-部门)")
|
||||
private Integer type;
|
||||
@TableField(value = "process_instance_id")
|
||||
@ApiModelProperty(value = "流程实例id")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 用户id,部门id)
|
||||
* 用户id
|
||||
*/
|
||||
@TableField(value = "user_depart_id")
|
||||
@ApiModelProperty(value = "用户id,部门id)")
|
||||
private String userDepartId;
|
||||
@TableField(value = "user_id")
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private String userId;
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
package com.jero.modules.activiti.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*流程节点_来源
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@ApiModel(description = "流程节点_来源")
|
||||
@Data
|
||||
@TableName(value = "process_node_origin")
|
||||
public class ProcessNodeOrigin {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 流程定义id
|
||||
*/
|
||||
@TableField(value = "process_definition_id")
|
||||
@ApiModelProperty(value = "流程定义id")
|
||||
private String processDefinitionId;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
@TableField(value = "node_name")
|
||||
@ApiModelProperty(value = "节点名称")
|
||||
private String nodeName;
|
||||
|
||||
/**
|
||||
* 节点类型
|
||||
*/
|
||||
@TableField(value = "node_type")
|
||||
@ApiModelProperty(value = "节点类型")
|
||||
private String nodeType;
|
||||
|
||||
/**
|
||||
* xml节点Id
|
||||
*/
|
||||
@TableField(value = "xml_node_id")
|
||||
@ApiModelProperty(value = "xml节点Id")
|
||||
private String xmlNodeId;
|
||||
|
||||
/**
|
||||
* xml来源节点id
|
||||
*/
|
||||
@TableField(value = "xml_source_ref")
|
||||
@ApiModelProperty(value = "xml来源节点id")
|
||||
private String xmlSourceRef;
|
||||
|
||||
/**
|
||||
* xml目标节点id
|
||||
*/
|
||||
@TableField(value = "xml_target_ref")
|
||||
@ApiModelProperty(value = "xml目标节点id")
|
||||
private String xmlTargetRef;
|
||||
|
||||
/**
|
||||
* 是否审批节点
|
||||
*/
|
||||
@TableField(value = "is_approval_node")
|
||||
@ApiModelProperty(value = "是否审批节点")
|
||||
private Integer isApprovalNode;
|
||||
|
||||
/**
|
||||
* 是否可删除
|
||||
*/
|
||||
@TableField(value = "is_can_deleted")
|
||||
@ApiModelProperty(value = "是否可删除")
|
||||
private Integer isCanDeleted;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@TableField(value = "sort")
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(value = "create_by")
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(value = "create_time")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
@TableField(value = "update_by")
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(value = "update_time")
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 所属部门
|
||||
*/
|
||||
@TableField(value = "sys_code")
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysCode;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.jero.modules.activiti.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-10-16 11:53
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum VariableTypeEnum {
|
||||
/**
|
||||
* A
|
||||
*/
|
||||
STRING("string", 1),
|
||||
LIST("list", 1);
|
||||
|
||||
private String name;
|
||||
private Integer value;
|
||||
|
||||
public static String getNameByValue(Integer value) {
|
||||
for (VariableTypeEnum enumObject : values()) {
|
||||
if (enumObject.getValue().equals(value)) {
|
||||
return enumObject.getName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Integer getValueByName(String name) {
|
||||
for (VariableTypeEnum enumObject : values()) {
|
||||
if (enumObject.getName().equals(name)) {
|
||||
return enumObject.getValue();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeLink;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
*/
|
||||
public interface LawsProcessNodeLinkMapper extends BaseMapper<ProcessNodeLink> {
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
*/
|
||||
public interface LawsProcessNodeMapper extends BaseMapper<ProcessNode> {
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeOrigin;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
*/
|
||||
public interface LawsProcessNodeOriginMapper extends BaseMapper<ProcessNodeOrigin> {
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeLink;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
*/
|
||||
public interface ProcessNodeLinkMapper extends BaseMapper<ProcessNodeLink> {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.jero.modules.activiti.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liJiaRao
|
||||
* @date 2023-09-26 15:12
|
||||
*/
|
||||
public interface ProcessNodeMapper extends BaseMapper<ProcessNode> {
|
||||
List<ProcessNode> selectByIdPdIdAndPiId(@Param("processDefinitionId") String processDefinitionId, @Param("processInstanceId") String processInstanceId);
|
||||
}
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.LawsProcessNodeMapper">
|
||||
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.entity.ProcessNode">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table process_node-->
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="process_definition_id" jdbcType="VARCHAR" property="processDefinitionId" />
|
||||
<result column="node_name" jdbcType="VARCHAR" property="nodeName" />
|
||||
<result column="is_approval_node" jdbcType="TINYINT" property="isApprovalNode" />
|
||||
<result column="is_can_deleted" jdbcType="TINYINT" property="isCanDeleted" />
|
||||
<result column="sort" jdbcType="TINYINT" property="sort" />
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="sys_code" jdbcType="VARCHAR" property="sysCode" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, process_definition_id, node_name, is_approval_node, is_can_deleted, sort, create_by,
|
||||
create_time, update_by, update_time, sys_code
|
||||
</sql>
|
||||
</mapper>
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.LawsProcessNodeOriginMapper">
|
||||
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.entity.ProcessNodeOrigin">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table process_node_origin-->
|
||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||
<result column="process_definition_id" jdbcType="VARCHAR" property="processDefinitionId" />
|
||||
<result column="node_name" jdbcType="VARCHAR" property="nodeName" />
|
||||
<result column="node_type" jdbcType="VARCHAR" property="nodeType" />
|
||||
<result column="xml_node_id" jdbcType="VARCHAR" property="xmlNodeId" />
|
||||
<result column="xml_source_ref" jdbcType="VARCHAR" property="xmlSourceRef" />
|
||||
<result column="xml_target_ref" jdbcType="VARCHAR" property="xmlTargetRef" />
|
||||
<result column="is_approval_node" jdbcType="TINYINT" property="isApprovalNode" />
|
||||
<result column="is_can_deleted" jdbcType="TINYINT" property="isCanDeleted" />
|
||||
<result column="sort" jdbcType="TINYINT" property="sort" />
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="sys_code" jdbcType="VARCHAR" property="sysCode" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, process_definition_id, node_name, node_type, xml_node_id, xml_source_ref, xml_target_ref,
|
||||
is_approval_node, is_can_deleted, sort, create_by, create_time, update_by, update_time,
|
||||
sys_code
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.LawsProcessNodeLinkMapper">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.ProcessNodeLinkMapper">
|
||||
<resultMap id="BaseResultMap" type="com.jero.modules.activiti.entity.ProcessNodeLink">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table process_node_link-->
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.activiti.mapper.ProcessNodeMapper">
|
||||
|
||||
<select id="selectByIdPdIdAndPiId" resultType="com.jero.modules.activiti.entity.ProcessNode">
|
||||
select pn.*
|
||||
<if test="processInstanceId != null and processInstanceId != ''">
|
||||
,group_concat(pnl.user_id) as link_user_ids
|
||||
</if>
|
||||
from process_node pn
|
||||
<if test="processInstanceId != null and processInstanceId != ''">
|
||||
left join process_node_link pnl on pn.id = pnl.process_node_id
|
||||
</if>
|
||||
<where>
|
||||
pn.process_definition_id = #{processDefinitionId}
|
||||
<if test="processInstanceId != null and processInstanceId != ''">
|
||||
and pnl.process_instance_id = #{processInstanceId}
|
||||
</if>
|
||||
</where>
|
||||
<if test="processInstanceId != null and processInstanceId != ''">
|
||||
group by pn.id
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.mapper.LawsProcessNodeLinkMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeLink;
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
public class LawsProcessNodeLinkService extends ServiceImpl<LawsProcessNodeLinkMapper, ProcessNodeLink> {
|
||||
|
||||
}
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.mapper.ActGeBytearrayMapper;
|
||||
import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
import org.activiti.bpmn.BpmnAutoLayout;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.*;
|
||||
import org.activiti.bpmn.model.Process;
|
||||
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.repository.Model;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.activiti.engine.repository.ProcessDefinitionQuery;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.mapper.LawsProcessNodeOriginMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeOrigin;
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
public class LawsProcessNodeOriginService extends ServiceImpl<LawsProcessNodeOriginMapper, ProcessNodeOrigin> {
|
||||
@Resource
|
||||
private RepositoryService repositoryService;
|
||||
@Resource
|
||||
private ProcessEngine processEngine;
|
||||
@Resource
|
||||
private ActGeBytearrayMapper actGeBytearrayMapper;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginMapper processNodeOriginMapper;
|
||||
@Resource
|
||||
private ProcessModelNodeMapper processModelNodeMapper;
|
||||
|
||||
public void copyNodeFromModel(String modelId, String processDefinitionId) {
|
||||
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessModelNode::getModelId,modelId);
|
||||
wrapper.isNotNull(ProcessModelNode::getSort);
|
||||
List<ProcessModelNode> processModelNodes = processModelNodeMapper.selectList(wrapper);
|
||||
|
||||
List<ProcessNodeOrigin> processNodeOriginList = new ArrayList<>();
|
||||
for (ProcessModelNode processModelNode : processModelNodes) {
|
||||
ProcessNodeOrigin processNodeOrigin = new ProcessNodeOrigin();
|
||||
BeanUtils.copyProperties(processModelNode,processNodeOrigin);
|
||||
processNodeOrigin.setId(null);
|
||||
processNodeOrigin.setProcessDefinitionId(processDefinitionId);
|
||||
}
|
||||
this.saveBatch(processNodeOriginList);
|
||||
}
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.mapper.LawsProcessNodeMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
public class LawsProcessNodeService extends ServiceImpl<LawsProcessNodeMapper, ProcessNode> {
|
||||
|
||||
}
|
||||
+26
@@ -8,6 +8,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.enums.VariableTypeEnum;
|
||||
import com.jero.modules.activiti.listener.CompleteListener;
|
||||
import com.jero.modules.activiti.listener.CreateListener;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.BpmnAutoLayout;
|
||||
@@ -340,6 +343,19 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
||||
userTask.setName(name);
|
||||
userTask.setId(id);
|
||||
userTask.setAssignee("${"+id.replace("-","")+"}");
|
||||
//增加监听器
|
||||
List<ActivitiListener> taskListeners = userTask.getTaskListeners();
|
||||
ActivitiListener createListener = new ActivitiListener();
|
||||
createListener.setEvent(TaskListener.EVENTNAME_CREATE);
|
||||
createListener.setImplementationType("class");
|
||||
createListener.setImplementation(CreateListener.class.getName());
|
||||
taskListeners.add(createListener);
|
||||
ActivitiListener completeListener = new ActivitiListener();
|
||||
completeListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
|
||||
completeListener.setImplementationType("class");
|
||||
completeListener.setImplementation(CompleteListener.class.getName());
|
||||
taskListeners.add(completeListener);
|
||||
userTask.setTaskListeners(taskListeners);
|
||||
return userTask;
|
||||
}
|
||||
protected static SequenceFlow createSequenceFlow(String from, String to) {
|
||||
@@ -398,6 +414,16 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
||||
nodeType = "userTask";
|
||||
nodeName = userTask.getName();
|
||||
xmlNodeId = userTask.getId();
|
||||
String assignee = userTask.getAssignee();
|
||||
MultiInstanceLoopCharacteristics loopCharacteristics = userTask.getLoopCharacteristics();
|
||||
if (loopCharacteristics != null){
|
||||
String inputDataItem = loopCharacteristics.getInputDataItem();
|
||||
processModelNode.setVariableType(VariableTypeEnum.LIST.getName());
|
||||
processModelNode.setVariableName(inputDataItem);
|
||||
}else {
|
||||
processModelNode.setVariableType(VariableTypeEnum.STRING.getName());
|
||||
processModelNode.setVariableName(assignee.replace("${","").replace("}",""));
|
||||
}
|
||||
processModelNode.setSort(sort++);
|
||||
} else if (flowElement instanceof SequenceFlow) {
|
||||
SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
|
||||
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import com.jero.modules.activiti.enums.VariableTypeEnum;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.mapper.ProcessNodeLinkMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeLink;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
public class ProcessNodeLinkService extends ServiceImpl<ProcessNodeLinkMapper, ProcessNodeLink> {
|
||||
@Resource
|
||||
private ProcessNodeService processNodeService;
|
||||
|
||||
public void saveNodeUserLink(String processDefinitionId, String processInstanceId, Map<String, Object> map) {
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
List<ProcessNode> processNodeList = processNodeService.list(wrapper);
|
||||
List<ProcessNodeLink> processNodeLinks = new ArrayList<>();
|
||||
for (ProcessNode processNode : processNodeList) {
|
||||
String processNodeId = processNode.getId();
|
||||
String variableType = processNode.getVariableType();
|
||||
String variableName = processNode.getVariableName();
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
if (map.containsKey(variableName)) {
|
||||
String s = (String) map.get(variableName);
|
||||
if (VariableTypeEnum.LIST.getName().equals(variableType)) {
|
||||
userIdList.addAll(Arrays.asList(s.split(",")));
|
||||
}else {
|
||||
userIdList.add(s);
|
||||
}
|
||||
}
|
||||
if (!userIdList.isEmpty()) {
|
||||
for (String userId : userIdList) {
|
||||
ProcessNodeLink processNodeLink = new ProcessNodeLink();
|
||||
processNodeLink.setProcessDefinitionId(processDefinitionId);
|
||||
processNodeLink.setProcessNodeId(processNodeId);
|
||||
processNodeLink.setProcessInstanceId(processInstanceId);
|
||||
processNodeLink.setUserId(userId);
|
||||
processNodeLinks.add(processNodeLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.saveBatch(processNodeLinks);
|
||||
|
||||
}
|
||||
|
||||
public List<ProcessNodeLink> selectByProcessInstanceId(String processInstanceId) {
|
||||
LambdaQueryWrapper<ProcessNodeLink> myQuery = Wrappers.lambdaQuery(ProcessNodeLink.class);
|
||||
myQuery.eq(ProcessNodeLink::getProcessInstanceId, processInstanceId);
|
||||
return list(myQuery);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.jero.modules.activiti.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.mapper.ProcessNodeMapper;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
*@author liJiaRao
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNode> {
|
||||
@Resource
|
||||
private ProcessModelNodeMapper processModelNodeMapper;
|
||||
@Resource
|
||||
private ProcessNodeLinkService processNodeLinkService;
|
||||
@Resource
|
||||
private ProcessNodeMapper processNodeMapper;
|
||||
|
||||
public void copyNodeFromModel(String modelId, String processDefinitionId) {
|
||||
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessModelNode::getNodeType,"userTask");
|
||||
wrapper.eq(ProcessModelNode::getModelId,modelId);
|
||||
wrapper.isNotNull(ProcessModelNode::getSort);
|
||||
List<ProcessModelNode> processModelNodes = processModelNodeMapper.selectList(wrapper);
|
||||
|
||||
List<ProcessNode> processNodeList = new ArrayList<>();
|
||||
for (ProcessModelNode processModelNode : processModelNodes) {
|
||||
ProcessNode node = new ProcessNode();
|
||||
BeanUtils.copyProperties(processModelNode,node);
|
||||
node.setId(null);
|
||||
node.setProcessDefinitionId(processDefinitionId);
|
||||
processNodeList.add(node);
|
||||
}
|
||||
this.saveBatch(processNodeList);
|
||||
}
|
||||
|
||||
public List<ProcessNode> getNodeList(String processDefinitionId, String processInstanceId) {
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
wrapper.orderByAsc(ProcessNode::getSort);
|
||||
//List<ProcessNode> processNodeList = this.list(wrapper);
|
||||
List<ProcessNode> processNodeList = processNodeMapper.selectByIdPdIdAndPiId(processDefinitionId,processInstanceId);
|
||||
|
||||
return processNodeList;
|
||||
}
|
||||
}
|
||||
-6
@@ -1,8 +1,6 @@
|
||||
package com.jero.modules.activiti.service.impl;
|
||||
|
||||
import com.jero.modules.activiti.config.WorkflowConstants;
|
||||
import com.jero.modules.activiti.mapper.ActGeBytearrayMapper;
|
||||
import com.jero.modules.activiti.mapper.LawsProcessNodeOriginMapper;
|
||||
import com.jero.modules.activiti.service.ProcessService;
|
||||
import com.jero.modules.activiti.service.impl.image.ICustomProcessDiagramGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -48,10 +46,6 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
private TaskService taskService;
|
||||
@Autowired
|
||||
private ManagementService managementService;
|
||||
@Resource
|
||||
private ActGeBytearrayMapper actGeBytearrayMapper;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginMapper processNodeOriginMapper;
|
||||
|
||||
private List<String> getHighLightedFlows(BpmnModel bpmnModel, ProcessDefinitionEntity processDefinitionEntity, List<HistoricActivityInstance> historicActivityInstances) {
|
||||
// 高亮流程已发生流转的线id集合
|
||||
|
||||
Reference in New Issue
Block a user