Commit f16f2ad3 by 赵剑炜

工作流联调

parent fee7bc8a
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
server: server:
tomcat: tomcat:
uri-encoding: UTF-8 #tomcat编码 uri-encoding: UTF-8 #tomcat编码
port: 10032 #tomcat端口 port: 10031 #tomcat端口
spring: spring:
main: main:
#bea同名类进行注册时,准许覆盖注册 #bea同名类进行注册时,准许覆盖注册
......
artifactId=jyzb-mq-consumer
groupId=com.junmp.jyzb
version=1.0.0
artifactId=jyzb-mq-producer
groupId=com.junmp.jyzb
version=1.0.0
...@@ -5,7 +5,7 @@ package com.junmp.junmpProcess.common; ...@@ -5,7 +5,7 @@ package com.junmp.junmpProcess.common;
* @create 2022-10-10 17:40 * @create 2022-10-10 17:40
*/ */
public interface WorkFlowConstants { public interface WorkFlowConstants {
String PROCESS_PREFIX = "Flowable"; String PROCESS_PREFIX = "Process_";
String START_EVENT_ID = "startEventNode"; String START_EVENT_ID = "startEventNode";
String END_EVENT_ID = "endEventNode"; String END_EVENT_ID = "endEventNode";
String EXPRESSION_CLASS = "exUtils."; String EXPRESSION_CLASS = "exUtils.";
......
...@@ -136,6 +136,11 @@ public class BpmnController { ...@@ -136,6 +136,11 @@ public class BpmnController {
public ApiRes<Boolean> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) { public ApiRes<Boolean> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
return WorkProcessService.start(startProcessInstanceDTO); return WorkProcessService.start(startProcessInstanceDTO);
} }
@ApiOperation("通过流程定义查看详情")
@PostMapping("instanceInfo")
public ApiRes<HandleDataVO> instanceInfo(@RequestBody HandleDataDTO handleDataDTO) {
return WorkProcessService.instanceInfo(handleDataDTO);
}
@ApiOperation("查看我发起的流程") @ApiOperation("查看我发起的流程")
@PostMapping("applyList") @PostMapping("applyList")
public ApiRes<PageResult<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) { public ApiRes<PageResult<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) {
...@@ -151,6 +156,11 @@ public class BpmnController { ...@@ -151,6 +156,11 @@ public class BpmnController {
public ResponseResult agree(@RequestBody HandleDataDTO handleDataDTO){ public ResponseResult agree(@RequestBody HandleDataDTO handleDataDTO){
return WorkProcessService.agree(handleDataDTO); return WorkProcessService.agree(handleDataDTO);
} }
@ApiOperation("查看我的已办")
@PostMapping("doneList")
public ApiRes<PageResult<TaskVO>> doneList(@RequestBody TaskDTO taskDTO){
return ApiRes.success(WorkProcessService.doneList(taskDTO));
}
@ApiOperation("撤销按钮") @ApiOperation("撤销按钮")
@PostMapping("revoke") @PostMapping("revoke")
public ResponseResult revoke(@RequestBody HandleDataDTO handleDataDTO){ public ResponseResult revoke(@RequestBody HandleDataDTO handleDataDTO){
......
...@@ -17,6 +17,7 @@ import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo; ...@@ -17,6 +17,7 @@ import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo;
import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask; import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.RepositoryService; import org.flowable.engine.RepositoryService;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener; import org.flowable.engine.delegate.ExecutionListener;
import com.junmp.junmpProcess.enums.AssigneeTypeEnums; import com.junmp.junmpProcess.enums.AssigneeTypeEnums;
...@@ -38,12 +39,15 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode; ...@@ -38,12 +39,15 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
@Component @Component
public class CounterSignListener implements ExecutionListener { public class CounterSignListener implements ExecutionListener {
@Resource @Resource
private TaskService taskService;
@Resource
private RepositoryService repositoryService; private RepositoryService repositoryService;
@Resource @Resource
private OrgUserMapper orgUserMapper; private OrgUserMapper orgUserMapper;
@Override @Override
public void notify(DelegateExecution execution) { public void notify(DelegateExecution execution) {
String currentActivityId = execution.getCurrentActivityId(); String currentActivityId = execution.getCurrentActivityId();
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess(); Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId); UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId);
String flowJson = mainProcess.getAttributeValue("http://flowable.org/bpmn", "Junmp"); String flowJson = mainProcess.getAttributeValue("http://flowable.org/bpmn", "Junmp");
...@@ -65,6 +69,7 @@ public class CounterSignListener implements ExecutionListener { ...@@ -65,6 +69,7 @@ public class CounterSignListener implements ExecutionListener {
String Type=group.getApproverType(); String Type=group.getApproverType();
if (Type.equals("1"))//指定人员,不处理 if (Type.equals("1"))//指定人员,不处理
{ {
List<String> assignedUser = group.getApproverIds(); List<String> assignedUser = group.getApproverIds();
for (String userInfo : assignedUser) { for (String userInfo : assignedUser) {
assigneeList.add(userInfo); assigneeList.add(userInfo);
...@@ -136,7 +141,7 @@ public class CounterSignListener implements ExecutionListener { ...@@ -136,7 +141,7 @@ public class CounterSignListener implements ExecutionListener {
else if (Type.equals("5"))//上级审批 else if (Type.equals("5"))//上级审批
{ {
LoginUser StartUser= LoginContext.getContext().getLoginUser(); LoginUser StartUser= LoginContext.getContext().getLoginUser();
List<UserListDTO> userList= orgUserMapper.QueryUserParentOrg(StartUser.getUserId().toString()); List<UserListDTO> userList= orgUserMapper.QueryUserWithParentOrg(StartUser.getUserId().toString());
if (userList.size()<=0)//没有上级则本身已是上级 if (userList.size()<=0)//没有上级则本身已是上级
{ {
...@@ -147,14 +152,18 @@ public class CounterSignListener implements ExecutionListener { ...@@ -147,14 +152,18 @@ public class CounterSignListener implements ExecutionListener {
{ {
for (UserListDTO userId :userList) for (UserListDTO userId :userList)
{ {
assigneeList.add(userId.getUserID()); assigneeList.add("1");
// assigneeList.add(userId.getUserID());
} }
} }
} }
if (assigneeList.size()!=0) if (assigneeList.size()!=0)
{execution.setVariable(variable, assigneeList);} {
execution.setVariable(variable, assigneeList);
}
} else { } else {
} }
......
...@@ -32,6 +32,7 @@ public class GlobalEndListener extends AbstractFlowableEngineEventListener { ...@@ -32,6 +32,7 @@ public class GlobalEndListener extends AbstractFlowableEngineEventListener {
//流程结束后工作在这里写 //流程结束后工作在这里写
//得到流程定义id //得到流程定义id
String processDefinitionId = event.getProcessDefinitionId(); String processDefinitionId = event.getProcessDefinitionId();
//得到流程实例id //得到流程实例id
String processInstanceId = event.getProcessInstanceId(); String processInstanceId = event.getProcessInstanceId();
/** /**
......
...@@ -21,6 +21,7 @@ public class ProcessListener implements ExecutionListener { ...@@ -21,6 +21,7 @@ public class ProcessListener implements ExecutionListener {
@Override @Override
public void notify(DelegateExecution execution) { public void notify(DelegateExecution execution) {
execution.setVariable(PROCESS_STATUS, BUSINESS_STATUS_4);
execution.setVariable(PROCESS_STATUS, BUSINESS_STATUS_4);
} }
} }
//package com.junmp.junmpProcess.listener; package com.junmp.junmpProcess.listener;
//
//import org.flowable.engine.RepositoryService; import org.flowable.engine.RepositoryService;
//import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
//import org.flowable.engine.TaskService; import org.flowable.engine.TaskService;
//import org.flowable.engine.delegate.TaskListener; import org.flowable.engine.delegate.TaskListener;
//import org.flowable.task.service.delegate.DelegateTask; import org.flowable.task.service.delegate.DelegateTask;
//import com.junmp.junmpProcess.utils.SpringContextHolder; import com.junmp.junmpProcess.utils.SpringContextHolder;
//import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource; import javax.annotation.Resource;
//
///** /**
// * @author LoveMyOrange * @author LoveMyOrange
// * @create 2022-10-15 14:51 * @create 2022-10-15 14:51
// */ */
//@Component @Component
//public class TaskCreatedListener implements TaskListener { public class TaskCreatedListener implements TaskListener {
// @Resource @Resource
// private TaskService taskService; private TaskService taskService;
// @Resource @Resource
// private RepositoryService repositoryService; private RepositoryService repositoryService;
//
// @Override @Override
// public void notify(DelegateTask delegateTask) { public void notify(DelegateTask delegateTask) {
// String taskDefinitionKey = delegateTask.getTaskDefinitionKey(); String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
// if ("root".equalsIgnoreCase(taskDefinitionKey)) { if ("root".equalsIgnoreCase(taskDefinitionKey)) {
// taskService.complete(delegateTask.getId()); taskService.complete(delegateTask.getId());
// } else { } else {
// if ("100000".equals(delegateTask.getAssignee())) { if ("100000".equals(delegateTask.getAssignee())) {
// Object autoRefuse = delegateTask.getVariable("autoRefuse"); Object autoRefuse = delegateTask.getVariable("autoRefuse");
// if (autoRefuse == null) { if (autoRefuse == null) {
// taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动通过"); taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动通过");
// taskService.complete(delegateTask.getId()); taskService.complete(delegateTask.getId());
// } else { } else {
// taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动驳回"); taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动驳回");
// RuntimeService runtimeService = SpringContextHolder.getBean(RuntimeService.class); RuntimeService runtimeService = SpringContextHolder.getBean(RuntimeService.class);
// runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), "审批人为空,自动驳回"); runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), "审批人为空,自动驳回");
// } }
// } }
// } }
// } }
//} }
...@@ -23,5 +23,5 @@ public interface OrgUserMapper { ...@@ -23,5 +23,5 @@ public interface OrgUserMapper {
*/ */
public List<UserListDTO> QueryUserByRoleIdAndOrg(String roleId,String orgId); public List<UserListDTO> QueryUserByRoleIdAndOrg(String roleId,String orgId);
public List<UserListDTO> QueryUserParentOrg(String userId); public List<UserListDTO> QueryUserWithParentOrg(String userId);
} }
...@@ -101,6 +101,9 @@ public interface WorkProcessService { ...@@ -101,6 +101,9 @@ public interface WorkProcessService {
*/ */
ApiRes<Boolean> start(StartProcessInstanceDTO startProcessInstanceDTO); ApiRes<Boolean> start(StartProcessInstanceDTO startProcessInstanceDTO);
/** /**
* 查看我发起的流程 * 查看我发起的流程
* *
...@@ -120,7 +123,7 @@ public interface WorkProcessService { ...@@ -120,7 +123,7 @@ public interface WorkProcessService {
* *
* @return * @return
*/ */
Result<Page<TaskVO>> doneList(@RequestBody TaskDTO taskDTO); PageResult<TaskVO> doneList(@RequestBody TaskDTO taskDTO);
/** /**
* 同意 * 同意
...@@ -205,7 +208,7 @@ public interface WorkProcessService { ...@@ -205,7 +208,7 @@ public interface WorkProcessService {
* *
* @return * @return
*/ */
Result<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO); ApiRes<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO);
// /** // /**
// * 上传文件 // * 上传文件
// * @return // * @return
......
...@@ -281,7 +281,6 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -281,7 +281,6 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
if (req.getIsStop() == true){ if (req.getIsStop() == true){
repositoryService.suspendProcessDefinitionById(req.getProcessDefinitionId(), true, null); repositoryService.suspendProcessDefinitionById(req.getProcessDefinitionId(), true, null);
processTemplates.setIsStop(true); processTemplates.setIsStop(true);
}else { }else {
processTemplates.setIsStop(false); processTemplates.setIsStop(false);
repositoryService.activateProcessDefinitionById(req.getProcessDefinitionId(), true, null); repositoryService.activateProcessDefinitionById(req.getProcessDefinitionId(), true, null);
...@@ -314,7 +313,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -314,7 +313,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
BpmnModel bpmnModel = toBpmn(processJsonNode,formJsonNode,formName,templateId); BpmnModel bpmnModel = toBpmn(processJsonNode,formJsonNode,formName,templateId);
Deployment deploy = repositoryService.createDeployment() Deployment deploy = repositoryService.createDeployment()
.addBpmnModel(templateId+".bpmn20.xml", bpmnModel) .addBpmnModel(formName+".bpmn20.xml", bpmnModel)
.name(formName) .name(formName)
.category(templateId) .category(templateId)
.deploy(); .deploy();
...@@ -416,7 +415,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -416,7 +415,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
Deployment deploy = repositoryService.createDeployment() Deployment deploy = repositoryService.createDeployment()
.addBpmnModel(process.getTemplateId()+".bpmn20.xml", bpmnModel) .addBpmnModel(formName+".bpmn20.xml", bpmnModel)
.name(formName) .name(formName)
.category(process.getTemplateId()) .category(process.getTemplateId())
.deploy(); .deploy();
...@@ -594,11 +593,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -594,11 +593,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
userTask.setId(id); userTask.setId(id);
userTask.setName(node.get("name").toString()); userTask.setName(node.get("name").toString());
// 设置多实例 // 设置多实例
// userTask.setAssignee("${user}");
MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics(); MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
// if (node.getAssignee().getMultiMode().equals("顺序审批")) {
// multiInstanceLoopCharacteristics.setSequential(true);
// }
multiInstanceLoopCharacteristics.setElementVariable("user"); multiInstanceLoopCharacteristics.setElementVariable("user");
// 完成条件 // 完成条件
multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfInstances == nrOfCompletedInstances}"); multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfInstances == nrOfCompletedInstances}");
...@@ -679,15 +674,11 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -679,15 +674,11 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
processVariables.put(FORM_VAR,formData); processVariables.put(FORM_VAR,formData);
processVariables.put(START_USER_INFO,JSONObject.toJSONString(StartUser)); processVariables.put(START_USER_INFO,JSONObject.toJSONString(StartUser));
processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1); processVariables.put(PROCESS_STATUS,BUSINESS_STATUS_1);
// processVariables.put("initiator",JSONObject.toJSONString(startUserInfo)); // processVariables.put("initiator",JSONObject.toJSONString(startUserInfo));
ArrayList<LoginUser> userInfos = CollUtil.newArrayList(StartUser); ArrayList<LoginUser> userInfos = CollUtil.newArrayList(StartUser);
Map formValue = JSONObject.parseObject(formData.toJSONString(), new TypeReference<Map>() { Map formValue = JSONObject.parseObject(formData.toJSONString(), new TypeReference<Map>() {
}); });
processVariables.putAll(formValue); processVariables.putAll(formValue);
ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder(); ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processInstanceDto.getProcessDefinitionId()) ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processInstanceDto.getProcessDefinitionId())
.latestVersion().singleResult(); .latestVersion().singleResult();
...@@ -707,12 +698,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -707,12 +698,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
.businessStatus(BUSINESS_STATUS_1) .businessStatus(BUSINESS_STATUS_1)
.start(); .start();
//手动完成第一个任务 //手动完成第一个任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); // Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
Object ts=new Object(); // Object ts=new Object();
if(task!=null){ // if(task!=null){
taskService.complete(task.getId()); // taskService.complete(task.getId());
//
} // }
return ApiRes.success(true); return ApiRes.success(true);
} }
catch (Exception e){ catch (Exception e){
...@@ -837,7 +828,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -837,7 +828,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
* @return * @return
*/ */
@Override @Override
public Result<Page<TaskVO>> doneList(TaskDTO taskDTO) { public PageResult<TaskVO> doneList(TaskDTO taskDTO) {
LoginUser StartUser= LoginContext.getContext().getLoginUser(); LoginUser StartUser= LoginContext.getContext().getLoginUser();
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery() List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery()
.taskAssignee(StartUser.getUserId().toString()) .taskAssignee(StartUser.getUserId().toString())
...@@ -882,7 +873,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -882,7 +873,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
page.setCurrent(taskDTO.getPageNo()); page.setCurrent(taskDTO.getPageNo());
page.setSize(taskDTO.getPageSize()); page.setSize(taskDTO.getPageSize());
page.setTotal(count); page.setTotal(count);
return Result.OK(page);
return PageResultFactory.createPageResult(page);
} }
...@@ -952,9 +945,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -952,9 +945,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
} }
} }
if (StringUtils.isNotBlank(handleDataDTO.getSignInfo())) { // if (StringUtils.isNotBlank(handleDataDTO.getSignInfo())) {
taskService.addComment(task.getId(), task.getProcessInstanceId(), "sign", handleDataDTO.getSignInfo()); // taskService.addComment(task.getId(), task.getProcessInstanceId(), "sign", handleDataDTO.getSignInfo());
} // }
taskService.complete(task.getId()); taskService.complete(task.getId());
...@@ -1282,11 +1275,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -1282,11 +1275,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
} }
@Override @Override
public Result<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO) { public ApiRes<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO) {
String processInstanceId = HandleDataDTO.getProcessInstanceId(); String processInstanceId = HandleDataDTO.getProcessInstanceId();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId) HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId)
.includeProcessVariables().singleResult(); .includeProcessVariables().singleResult();
String processDefinitionKey = historicProcessInstance.getProcessDefinitionKey(); String processDefinitionKey = historicProcessInstance.getProcessDefinitionKey();
String pro=processDefinitionKey.replace(PROCESS_PREFIX, "");
ProcessTemplates processTemplates = processTemplateService.getById(processDefinitionKey.replace(PROCESS_PREFIX, "")); ProcessTemplates processTemplates = processTemplateService.getById(processDefinitionKey.replace(PROCESS_PREFIX, ""));
// processTemplates.setLogo(processTemplates.getIcon()); // processTemplates.setLogo(processTemplates.getIcon());
processTemplates.setFormId(processTemplates.getTemplateId()); processTemplates.setFormId(processTemplates.getTemplateId());
...@@ -1304,40 +1298,40 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -1304,40 +1298,40 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}); });
SettingsInfo settingsInfo = JSONObject.parseObject(processTemplates.getSettings(), new TypeReference<SettingsInfo>() { SettingsInfo settingsInfo = JSONObject.parseObject(processTemplates.getSettings(), new TypeReference<SettingsInfo>() {
}); });
Boolean sign = settingsInfo.getSign(); // Boolean sign = settingsInfo.getSign();
ChildNode currentNode = null; ChildNode currentNode = null;
if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) { if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) {
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(HandleDataDTO.getTaskId()).singleResult(); HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(HandleDataDTO.getTaskId()).singleResult();
currentNode = getChildNode(childNode, historicTaskInstance.getTaskDefinitionKey()); currentNode = getChildNode(childNode, historicTaskInstance.getTaskDefinitionKey());
List<FormOperates> formPerms = currentNode.getProps().getFormPerms(); // List<FormOperates> formPerms = currentNode.getProps().getFormPerms();
if (CollUtil.isNotEmpty(formPerms)) { // if (CollUtil.isNotEmpty(formPerms)) {
Iterator<FormOperates> iterator = formPerms.iterator(); // Iterator<FormOperates> iterator = formPerms.iterator();
while (iterator.hasNext()) { // while (iterator.hasNext()) {
FormOperates next = iterator.next(); // FormOperates next = iterator.next();
if ("H".equals(next.getPerm())) { // if ("H".equals(next.getPerm())) {
iterator.remove(); // iterator.remove();
if (jsonObject != null) { // if (jsonObject != null) {
jsonObject.remove(next.getId()); // jsonObject.remove(next.getId());
} // }
} // }
} // }
} // }
handleDataVO.setCurrentNode(currentNode); handleDataVO.setCurrentNode(currentNode);
handleDataVO.setTaskId(HandleDataDTO.getTaskId()); handleDataVO.setTaskId(HandleDataDTO.getTaskId());
} }
if (sign) { // if (sign) {
handleDataVO.setSignFlag(true); // handleDataVO.setSignFlag(true);
} // }
if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) { // if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) {
if (currentNode != null) { // if (currentNode != null) {
if (currentNode.getProps().getSign()) { // if (currentNode.getProps().getSign()) {
handleDataVO.setSignFlag(true); // handleDataVO.setSignFlag(true);
} else { // } else {
handleDataVO.setSignFlag(false); // handleDataVO.setSignFlag(false);
} // }
} // }
} // }
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(historicProcessInstance.getId()).list(); List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(historicProcessInstance.getId()).list();
Map<String, List<HistoricActivityInstance>> historicActivityInstanceMap = new HashMap<>(); Map<String, List<HistoricActivityInstance>> historicActivityInstanceMap = new HashMap<>();
...@@ -1422,7 +1416,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper, ...@@ -1422,7 +1416,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
} }
handleDataVO.setProcessTemplates(processTemplates); handleDataVO.setProcessTemplates(processTemplates);
handleDataVO.setDetailVOList(deatailMap); handleDataVO.setDetailVOList(deatailMap);
return Result.OK(handleDataVO); return ApiRes.success(handleDataVO);
} }
private void collectUserTaskInfo(List<Comment> processInstanceComments, private void collectUserTaskInfo(List<Comment> processInstanceComments,
......
...@@ -11,6 +11,7 @@ import org.flowable.bpmn.model.*; ...@@ -11,6 +11,7 @@ import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.Process;
import org.flowable.engine.TaskService; import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.ExecutionListener; import org.flowable.engine.delegate.ExecutionListener;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -62,7 +63,7 @@ public class BpmnConvert { ...@@ -62,7 +63,7 @@ public class BpmnConvert {
process.addFlowElement(endEvent); process.addFlowElement(endEvent);
// 三.递归绘制节点 // 三.递归绘制节点
drawNode("root",process, processNode,formNode, "_start", "_end", null); drawNode("0",process, processNode,formNode, "_start", "_end", null);
// 四.自动布局 // 四.自动布局
new BpmnAutoLayout(bpmnModel).execute(); new BpmnAutoLayout(bpmnModel).execute();
// 五.转xml // 五.转xml
...@@ -119,8 +120,9 @@ public class BpmnConvert { ...@@ -119,8 +120,9 @@ public class BpmnConvert {
* @return Inout * @return Inout
*/ */
private static Inout drawBzNode(Process process, JsonNode node,JsonNode formJson,String typeNode) { private static Inout drawBzNode(Process process, JsonNode node,JsonNode formJson,String typeNode) {
// String id= "Node_"+UUID.randomUUID();
String id="Node_"+ node.get("id").asText(); // String id= "Node_"+UUID.randomUUID();
String id="root";
//创建发起人结点 //创建发起人结点
UserTask task = new UserTask(); UserTask task = new UserTask();
//设置结点ID //设置结点ID
...@@ -129,11 +131,23 @@ public class BpmnConvert { ...@@ -129,11 +131,23 @@ public class BpmnConvert {
task.setName(node.get("name").asText()); task.setName(node.get("name").asText());
//通过将 ${initiator} 作为指派人的值,可以将用户任务分配给流程的发起人。当流程实例启动时,${initiator} 会被替换为实际的发起人信息。 //通过将 ${initiator} 作为指派人的值,可以将用户任务分配给流程的发起人。当流程实例启动时,${initiator} 会被替换为实际的发起人信息。
//需要注意的是,在使用表达式时,需要确保流程引擎的配置中启用了表达式语言(例如使用 Flowable 的默认配置,会启用表达式语言)。 //需要注意的是,在使用表达式时,需要确保流程引擎的配置中启用了表达式语言(例如使用 Flowable 的默认配置,会启用表达式语言)。
task.setAssignee("${initiator}"); // task.setAssignee("${initiator}");
List<FormProperty> formProperties = formJsonToFormProperty(formJson); List<FormProperty> formProperties = formJsonToFormProperty(formJson);
task.setFormProperties(formProperties); task.setFormProperties(formProperties);
ArrayList<FlowableListener> taskListeners = new ArrayList<>();
FlowableListener taskListener = new FlowableListener();
// 事件类型,
taskListener.setEvent(TaskListener.EVENTNAME_CREATE);
// 监听器类型
taskListener.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
// 设置实现了,这里设置监听器的类型是delegateExpression,这样可以在实现类注入Spring bean.
taskListener.setImplementation("${taskCreatedListener}");
taskListeners.add(taskListener);
task.setTaskListeners(taskListeners);
//添加连线 //添加连线
process.addFlowElement(task); process.addFlowElement(task);
return new Inout(id, id); return new Inout(id, id);
} }
...@@ -175,11 +189,11 @@ public class BpmnConvert { ...@@ -175,11 +189,11 @@ public class BpmnConvert {
multiInstanceLoopCharacteristics.setInputDataItem(userTask.getId()+"assigneeList"); multiInstanceLoopCharacteristics.setInputDataItem(userTask.getId()+"assigneeList");
// 迭代集合 // 迭代集合
multiInstanceLoopCharacteristics.setElementVariable("assigneeName"); multiInstanceLoopCharacteristics.setElementVariable("assigneeName");
// //
multiInstanceLoopCharacteristics.setSequential(false); multiInstanceLoopCharacteristics.setSequential(false);
multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfCompletedInstances/nrOfInstances > 0}"); multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfCompletedInstances/nrOfInstances > 0}");
userTask.setAssignee("${assigneeName}"); userTask.setAssignee("${assigneeName}");
// 设置多实例属性 // 设置多实例属性
userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics); userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
process.addFlowElement(userTask); process.addFlowElement(userTask);
return new Inout(id, id); return new Inout(id, id);
...@@ -197,7 +211,12 @@ public class BpmnConvert { ...@@ -197,7 +211,12 @@ public class BpmnConvert {
listener.setEvent(ExecutionListener.EVENTNAME_START);//监听任务启动 listener.setEvent(ExecutionListener.EVENTNAME_START);//监听任务启动
listener.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); listener.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
listener.setImplementation("${counterSignListener}");//启动角色分配监听事件 listener.setImplementation("${counterSignListener}");//启动角色分配监听事件
FlowableListener flowableListener = new FlowableListener();
flowableListener.setEvent(ExecutionListener.EVENTNAME_END);
flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
flowableListener.setImplementation("${processListener}");
taskListeners.add(listener); taskListeners.add(listener);
taskListeners.add(flowableListener);
return taskListeners; return taskListeners;
} }
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
GROUP BY su.user_id,su.real_name GROUP BY su.user_id,su.real_name
</select> </select>
<select id="QueryUserParentOrg" resultMap="UserListDTO"> <select id="QueryUserWithParentOrg" resultMap="UserListDTO">
SELECT SELECT
CASE CASE
WHEN userorg2.org_id = -1 THEN mainUser.user_id WHEN userorg2.org_id = -1 THEN mainUser.user_id
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论