|
@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.distributed.print.business.activiti.custom.service.DefaultInstanceConvertToMultiInstance;
|
|
import com.qmth.distributed.print.business.activiti.custom.service.DefaultInstanceConvertToMultiInstance;
|
|
import com.qmth.distributed.print.business.activiti.custom.service.MultiWorkFlow;
|
|
import com.qmth.distributed.print.business.activiti.custom.service.MultiWorkFlow;
|
|
@@ -33,6 +34,7 @@ import org.activiti.engine.RepositoryService;
|
|
import org.activiti.engine.RuntimeService;
|
|
import org.activiti.engine.RuntimeService;
|
|
import org.activiti.engine.TaskService;
|
|
import org.activiti.engine.TaskService;
|
|
import org.activiti.engine.impl.RepositoryServiceImpl;
|
|
import org.activiti.engine.impl.RepositoryServiceImpl;
|
|
|
|
+import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior;
|
|
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
|
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
|
import org.activiti.engine.repository.Deployment;
|
|
import org.activiti.engine.repository.Deployment;
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
@@ -197,8 +199,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
String id = (String) map.get(SystemConstant.ID);
|
|
String id = (String) map.get(SystemConstant.ID);
|
|
BpmnModel model = (BpmnModel) map.get(SystemConstant.MODEL);
|
|
BpmnModel model = (BpmnModel) map.get(SystemConstant.MODEL);
|
|
Map flowProcessVarMap = (Map) map.get(SystemConstant.FLOW_PROCESS_VAR_MAP);
|
|
Map flowProcessVarMap = (Map) map.get(SystemConstant.FLOW_PROCESS_VAR_MAP);
|
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
- flowProcessVarMap.forEach((k, v) -> {
|
|
|
|
|
|
+ agginessMap.forEach((k, v) -> {
|
|
if (v instanceof CustomFlowVarDto) {
|
|
if (v instanceof CustomFlowVarDto) {
|
|
CustomFlowVarDto customFlowVarDto = (CustomFlowVarDto) v;
|
|
CustomFlowVarDto customFlowVarDto = (CustomFlowVarDto) v;
|
|
varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().size() == 1 ? customFlowVarDto.getApproveIds().get(0) : customFlowVarDto.getApproveIds());
|
|
varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().size() == 1 ? customFlowVarDto.getApproveIds().get(0) : customFlowVarDto.getApproveIds());
|
|
@@ -410,44 +413,59 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), SystemConstant.convertIdToLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), SystemConstant.convertIdToLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
|
|
}
|
|
}
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
- if (Objects.nonNull(map.get(SystemConstant.USER_TASK_ID)) && !Objects.equals(map.get(SystemConstant.USER_TASK_ID), "")) {
|
|
|
|
- String usertaskId = (String) map.get(SystemConstant.USER_TASK_ID);
|
|
|
|
- if (Objects.nonNull(flowProcessVarMap.get(usertaskId))) {
|
|
|
|
- List<Object> tempMap = (List<Object>) flowProcessVarMap.get(usertaskId);
|
|
|
|
- Gson gson = new Gson();
|
|
|
|
- CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(tempMap.get(0)), CustomFlowVarDto.class);
|
|
|
|
- map.computeIfAbsent(SystemConstant.APPROVE, v -> usertaskId);
|
|
|
|
- map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), v -> customFlowVarDto.getApproveIds().size() == 1 ? customFlowVarDto.getApproveIds().get(0) : customFlowVarDto.getApproveIds());
|
|
|
|
- } else {
|
|
|
|
- map.computeIfAbsent(SystemConstant.APPROVE, v -> "end");
|
|
|
|
|
|
+ //判断流程审批是通过还是驳回
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
+ String usertaskId = null;
|
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
|
|
|
|
+ if (approvePass == FlowApprovePassEnum.PASS) {
|
|
|
|
+ Map<String, List<CustomFlowGatewayDto>> approvePassMap = (Map<String, List<CustomFlowGatewayDto>>) flowProcessVarMap.get(SystemConstant.APPROVE_PASS_MAP);
|
|
|
|
+ if (Objects.nonNull(approvePassMap.get(userTask.getId())) && !Objects.equals(approvePassMap.get(userTask.getId()), "")) {
|
|
|
|
+ List<CustomFlowGatewayDto> customFlowGatewayDtoList = gson.fromJson(gson.toJson(approvePassMap.get(userTask.getId())), new TypeToken<List<CustomFlowGatewayDto>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ boolean pass = false;
|
|
|
|
+ for (CustomFlowGatewayDto c : customFlowGatewayDtoList) {
|
|
|
|
+ if (Objects.equals(c.getFlowTaskId(), userTask.getId())) {
|
|
|
|
+ usertaskId = c.getConditionExp().substring(c.getConditionExp().indexOf("'") + 1, c.getConditionExp().lastIndexOf("'"));
|
|
|
|
+ pass = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!pass) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("该节点不能通过");
|
|
|
|
+ }
|
|
|
|
+ map.put(SystemConstant.APPROVE, usertaskId);
|
|
|
|
+ if (currFlow.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
|
|
|
+ map.computeIfAbsent(CustomFlowElementEnum.REJECT.getId(), v -> 0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (approvePass == FlowApprovePassEnum.REJECT) {
|
|
|
|
+ if (Objects.isNull(map.get(SystemConstant.USER_TASK_ID)) || Objects.equals(map.get(SystemConstant.USER_TASK_ID), "")) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("流转节点不能为空");
|
|
|
|
+ }
|
|
|
|
+ usertaskId = (String) map.get(SystemConstant.USER_TASK_ID);
|
|
|
|
+ Map<String, List<CustomFlowGatewayDto>> approveRejectMap = (Map<String, List<CustomFlowGatewayDto>>) flowProcessVarMap.get(SystemConstant.APPROVE_REJECT_MAP);
|
|
|
|
+ List<CustomFlowGatewayDto> customFlowGatewayDtoList = gson.fromJson(gson.toJson(approveRejectMap.get(userTask.getId())), new TypeToken<List<CustomFlowGatewayDto>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ boolean reject = false;
|
|
|
|
+ for (CustomFlowGatewayDto c : customFlowGatewayDtoList) {
|
|
|
|
+ if (Objects.equals(c.getFlowTaskId(), usertaskId)) {
|
|
|
|
+ reject = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!reject) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("该节点不能驳回");
|
|
|
|
+ }
|
|
|
|
+ map.put(SystemConstant.APPROVE, usertaskId);
|
|
|
|
+ if (currFlow.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
|
|
|
+ map.computeIfAbsent(CustomFlowElementEnum.REJECT.getId(), v -> 1);
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- map.computeIfAbsent(SystemConstant.APPROVE, v -> "end");
|
|
|
|
}
|
|
}
|
|
-// //广东医科大学流程
|
|
|
|
-// if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
|
|
|
|
-// || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
|
|
|
|
-// if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题提交
|
|
|
|
-// this.assignSubmit(task, sysUser, tfFlowApprove, tfFlowLog, map);
|
|
|
|
-// } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
|
|
|
|
-// this.directorApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
|
|
|
|
-// } else if (setupEnum == FlowApproveSetupEnum.SECOND_APPROVE) {//院长提交
|
|
|
|
-// this.presidentApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map, objectMap, processInstanceId);
|
|
|
|
-// } else if (setupEnum == FlowApproveSetupEnum.THREE_APPROVE) {//命题提交
|
|
|
|
-// this.teacherApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map);
|
|
|
|
-// } else if (setupEnum == FlowApproveSetupEnum.FOUR_APPROVE) {//印刷员提交
|
|
|
|
-// this.printApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map);
|
|
|
|
-// }
|
|
|
|
-// }//江西中医药大学
|
|
|
|
-// else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
|
|
|
|
-// if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题提交
|
|
|
|
-// this.assignSubmit(task, sysUser, tfFlowApprove, tfFlowLog, map);
|
|
|
|
-// } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
|
|
|
|
-// this.directorApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
|
|
|
|
-// }
|
|
|
|
-// } else {
|
|
|
|
-// throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
|
|
|
|
-// }
|
|
|
|
|
|
+ //获取流程变量
|
|
|
|
+ if (Objects.nonNull(agginessMap.get(usertaskId))) {
|
|
|
|
+ CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(usertaskId)), CustomFlowVarDto.class);
|
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), v -> customFlowVarDto.getApproveIds().size() == 1 ? customFlowVarDto.getApproveIds().get(0) : customFlowVarDto.getApproveIds());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
|
|
@@ -1512,7 +1530,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
FlowTaskLink flowTaskLink = new FlowTaskLink();
|
|
FlowTaskLink flowTaskLink = new FlowTaskLink();
|
|
Map<String, Object> flowProcessVarMap = new HashMap<>();
|
|
Map<String, Object> flowProcessVarMap = new HashMap<>();
|
|
Map<String, Map<String, List<CustomFlowGatewayDto>>> gatewayMap = new HashMap<>();
|
|
Map<String, Map<String, List<CustomFlowGatewayDto>>> gatewayMap = new HashMap<>();
|
|
- flowProcessVarMap.computeIfAbsent(SystemConstant.GATEWAY_MAP, v -> gatewayMap);
|
|
|
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap = new HashMap<>();
|
|
|
|
+ Map<String, List<CustomFlowGatewayDto>> approvePassMap = new HashMap<>();
|
|
|
|
+ Map<String, List<CustomFlowGatewayDto>> approveRejectMap = new HashMap<>();
|
|
|
|
+ flowProcessVarMap.computeIfAbsent(SystemConstant.AGGINESS_MAP, v -> agginessMap);
|
|
|
|
+ flowProcessVarMap.computeIfAbsent(SystemConstant.APPROVE_PASS_MAP, v -> approvePassMap);
|
|
|
|
+ flowProcessVarMap.computeIfAbsent(SystemConstant.APPROVE_REJECT_MAP, v -> approveRejectMap);
|
|
AtomicInteger gatewayId = new AtomicInteger(1);
|
|
AtomicInteger gatewayId = new AtomicInteger(1);
|
|
AtomicInteger sequenceId = new AtomicInteger(1);
|
|
AtomicInteger sequenceId = new AtomicInteger(1);
|
|
CustomFlowDto customFlowDefaultDto = null;
|
|
CustomFlowDto customFlowDefaultDto = null;
|
|
@@ -1531,7 +1554,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
process.addFlowElement(createStartEvent());
|
|
process.addFlowElement(createStartEvent());
|
|
//默认在开始节点后新增一个审批节点
|
|
//默认在开始节点后新增一个审批节点
|
|
customFlowDefaultDto = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
customFlowDefaultDto = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
- flowProcessVarMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, Arrays.asList("")));
|
|
|
|
|
|
+ agginessMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, Arrays.asList("")));
|
|
process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, Objects.nonNull(flowTaskLink.getLast().getTask().getContent()) && !Objects.equals(flowTaskLink.getLast().getTask().getContent(), "") ? flowTaskLink.getLast().getTask().getContent() : DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK_NAME, DefaultInstanceConvertToMultiInstance.APPROVE_ID_EXP));
|
|
process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, Objects.nonNull(flowTaskLink.getLast().getTask().getContent()) && !Objects.equals(flowTaskLink.getLast().getTask().getContent(), "") ? flowTaskLink.getLast().getTask().getContent() : DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK_NAME, DefaultInstanceConvertToMultiInstance.APPROVE_ID_EXP));
|
|
break;
|
|
break;
|
|
case PROCESS://过程节点
|
|
case PROCESS://过程节点
|
|
@@ -1561,17 +1584,18 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
case ORDER://依次审批
|
|
case ORDER://依次审批
|
|
case ALL://会签审批
|
|
case ALL://会签审批
|
|
int finalI = i;
|
|
int finalI = i;
|
|
- flowProcessVarMap.computeIfAbsent(node.getTask().getFlowTaskId(), v -> new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + finalI, approveUserIds));
|
|
|
|
|
|
+ agginessMap.computeIfAbsent(node.getTask().getFlowTaskId(), v -> new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + finalI, approveUserIds));
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
|
|
if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
|
|
|
|
+ List<CustomFlowGatewayDto> flowTaskIds = new ArrayList<>();
|
|
|
|
+ approveRejectMap.put(node.getTask().getFlowTaskId(), flowTaskIds);
|
|
//驳回属性
|
|
//驳回属性
|
|
switch (customFlowPropertyDto.getRejectType()) {
|
|
switch (customFlowPropertyDto.getRejectType()) {
|
|
case PREV://上一节点
|
|
case PREV://上一节点
|
|
FlowTaskNode flowTaskNode = node.getBefore();
|
|
FlowTaskNode flowTaskNode = node.getBefore();
|
|
- List<CustomFlowGatewayDto> flowTaskIds = new ArrayList<>();
|
|
|
|
boolean isProcess = false;
|
|
boolean isProcess = false;
|
|
while (!isProcess) {
|
|
while (!isProcess) {
|
|
if (flowTaskNode.getTask().getType() == CustomFlowTypeEnum.PROCESS) {
|
|
if (flowTaskNode.getTask().getType() == CustomFlowTypeEnum.PROCESS) {
|
|
@@ -1588,16 +1612,16 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
flowTaskIds);
|
|
flowTaskIds);
|
|
break;
|
|
break;
|
|
case START://发起人节点
|
|
case START://发起人节点
|
|
|
|
+ flowTaskIds.add(new CustomFlowGatewayDto(customFlowDefaultDto.getFlowTaskId(), "${" + SystemConstant.APPROVE + "=='" + customFlowDefaultDto.getFlowTaskId() + "'}"));
|
|
createCustomFlowExclusiveGateway(flowTaskLink,
|
|
createCustomFlowExclusiveGateway(flowTaskLink,
|
|
gatewayMap,
|
|
gatewayMap,
|
|
process,
|
|
process,
|
|
gatewayId,
|
|
gatewayId,
|
|
customFlowDto.getFlowTaskId(),
|
|
customFlowDto.getFlowTaskId(),
|
|
- Arrays.asList(new CustomFlowGatewayDto(customFlowDefaultDto.getFlowTaskId(), "${" + SystemConstant.APPROVE + "=='" + customFlowDefaultDto.getFlowTaskId() + "'}")));
|
|
|
|
|
|
+ flowTaskIds);
|
|
break;
|
|
break;
|
|
case PREV_ALL://该节点前全部节点
|
|
case PREV_ALL://该节点前全部节点
|
|
flowTaskNode = node.getBefore();
|
|
flowTaskNode = node.getBefore();
|
|
- flowTaskIds = new ArrayList<>();
|
|
|
|
while (Objects.nonNull(flowTaskNode)) {
|
|
while (Objects.nonNull(flowTaskNode)) {
|
|
if (flowTaskNode.getTask().getType() == CustomFlowTypeEnum.PROCESS) {
|
|
if (flowTaskNode.getTask().getType() == CustomFlowTypeEnum.PROCESS) {
|
|
flowTaskIds.add(new CustomFlowGatewayDto(flowTaskNode.getTask().getFlowTaskId(), "${" + SystemConstant.APPROVE + "=='" + flowTaskNode.getTask().getFlowTaskId() + "'}"));
|
|
flowTaskIds.add(new CustomFlowGatewayDto(flowTaskNode.getTask().getFlowTaskId(), "${" + SystemConstant.APPROVE + "=='" + flowTaskNode.getTask().getFlowTaskId() + "'}"));
|
|
@@ -1614,6 +1638,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+
|
|
//驳回再提交属性
|
|
//驳回再提交属性
|
|
switch (customFlowPropertyDto.getRejectResubmitType()) {
|
|
switch (customFlowPropertyDto.getRejectResubmitType()) {
|
|
case NORMAL://按正常流程提交
|
|
case NORMAL://按正常流程提交
|
|
@@ -1651,7 +1676,18 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
normalSequenceId = DefaultInstanceConvertToMultiInstance.SEQUENCE_NAME + sequenceId.getAndIncrement();
|
|
normalSequenceId = DefaultInstanceConvertToMultiInstance.SEQUENCE_NAME + sequenceId.getAndIncrement();
|
|
log.info("1 start:{},end:{}", flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId());
|
|
log.info("1 start:{},end:{}", flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId());
|
|
if (flowTaskNode.getBefore().getTask().getType() == CustomFlowTypeEnum.EXCLUSIVE_GATE_WAY) {
|
|
if (flowTaskNode.getBefore().getTask().getType() == CustomFlowTypeEnum.EXCLUSIVE_GATE_WAY) {
|
|
- process.addFlowElement(createSequenceFlow(flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId(), normalSequenceId, FlowApprovePassEnum.PASS.getTitle(), "${" + SystemConstant.APPROVE + "=='" + flowTaskNode.getTask().getFlowTaskId() + "'}"));
|
|
|
|
|
|
+ FlowTaskNode flowTaskNodeTemp = flowTaskNode.getBefore();
|
|
|
|
+ boolean isProcess = false;
|
|
|
|
+ CustomFlowGatewayDto customFlowGatewayDto = null;
|
|
|
|
+ while (!isProcess) {
|
|
|
|
+ if (flowTaskNodeTemp.getTask().getType() == CustomFlowTypeEnum.PROCESS) {
|
|
|
|
+ isProcess = true;
|
|
|
|
+ customFlowGatewayDto = new CustomFlowGatewayDto(flowTaskNodeTemp.getTask().getFlowTaskId(), "${" + SystemConstant.APPROVE + "=='" + flowTaskNode.getTask().getFlowTaskId() + "'}");
|
|
|
|
+ }
|
|
|
|
+ flowTaskNodeTemp = flowTaskNodeTemp.getBefore();
|
|
|
|
+ }
|
|
|
|
+ approvePassMap.put(customFlowGatewayDto.getFlowTaskId(), Arrays.asList(customFlowGatewayDto));
|
|
|
|
+ process.addFlowElement(createSequenceFlow(flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId(), normalSequenceId, FlowApprovePassEnum.PASS.getTitle(), customFlowGatewayDto.getConditionExp()));
|
|
} else {
|
|
} else {
|
|
process.addFlowElement(createSequenceFlow(flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId(), normalSequenceId, FlowApprovePassEnum.PASS.getTitle(), null));
|
|
process.addFlowElement(createSequenceFlow(flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId(), normalSequenceId, FlowApprovePassEnum.PASS.getTitle(), null));
|
|
}
|
|
}
|
|
@@ -1724,12 +1760,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
@Transactional
|
|
@Transactional
|
|
public void customFlowStartUpdateApproveId(Long customFlowId, Long approveId) {
|
|
public void customFlowStartUpdateApproveId(Long customFlowId, Long approveId) {
|
|
TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
|
|
TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
|
|
|
|
+ Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlow);
|
|
Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(tfCustomFlow.getFlowId())).singleResult();
|
|
Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(tfCustomFlow.getFlowId())).singleResult();
|
|
task.setAssignee(String.valueOf(approveId));
|
|
task.setAssignee(String.valueOf(approveId));
|
|
taskService.saveTask(task);
|
|
taskService.saveTask(task);
|
|
- Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlow);
|
|
|
|
Map<String, Object> map = JacksonUtil.readJson(tfCustomFlow.getFlowProcessVar(), Map.class);
|
|
Map<String, Object> map = JacksonUtil.readJson(tfCustomFlow.getFlowProcessVar(), Map.class);
|
|
- flowProcessVarMap.put(CustomFlowDynamicBuildEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, Arrays.asList(new CustomFlowVarDto(SystemConstant.APPROVE_ID, Arrays.asList(String.valueOf(approveId)))));
|
|
|
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
|
|
|
|
+ agginessMap.put(CustomFlowDynamicBuildEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, Arrays.asList(String.valueOf(approveId))));
|
|
|
|
+ flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
|
|
map.put(SystemConstant.FLOW_PROCESS_VAR_MAP, flowProcessVarMap);
|
|
map.put(SystemConstant.FLOW_PROCESS_VAR_MAP, flowProcessVarMap);
|
|
tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
|
|
tfCustomFlow.setFlowProcessVar(JacksonUtil.parseJson(map));
|
|
tfCustomFlowService.updateById(tfCustomFlow);
|
|
tfCustomFlowService.updateById(tfCustomFlow);
|