|
@@ -135,26 +135,30 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
for (Map.Entry<String, CustomFlowVarDto> entry : agginessMap.entrySet()) {
|
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(entry.getValue()), CustomFlowVarDto.class);
|
|
|
if (Objects.nonNull(customFlowVarDto.getFlowTaskVar()) && customFlowVarDto.getFlowTaskVar().contains(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST)) {
|
|
|
- if (customFlowVarDto.getApproveUserType() == CustomFlowApproveUserTypeEnum.USER) {
|
|
|
- Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
- if (customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.SOME) {
|
|
|
- varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
- } else {
|
|
|
- varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
- }
|
|
|
- } else if (customFlowVarDto.getApproveUserType() == CustomFlowApproveUserTypeEnum.ROLE) {
|
|
|
- roleGroupMemberMatchParams = Objects.isNull(roleGroupMemberMatchParams) ? new SysRoleGroupMemberMatchParams() : roleGroupMemberMatchParams;
|
|
|
- if (Objects.isNull(roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap()) || roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap().size() == 0) {
|
|
|
- flowRoleGroupMemberMatchMap = new LinkedHashMap<>();
|
|
|
- } else {
|
|
|
- flowRoleGroupMemberMatchMap = roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap();
|
|
|
- }
|
|
|
- if (flowRoleGroupMemberMatchMap.size() == 0) {
|
|
|
- flowRoleGroupMemberMatchMap.computeIfAbsent(entry.getKey(), v -> new SysRoleGroupMemberMatch(customFlowVarDto.getApproveRoleIds().stream().map(s -> SystemConstant.convertIdToLong(s)).collect(Collectors.toList()), approveId));
|
|
|
- } else {
|
|
|
- flowRoleGroupMemberMatchMap.computeIfAbsent(entry.getKey(), v -> new SysRoleGroupMemberMatch(customFlowVarDto.getApproveRoleIds().stream().map(s -> SystemConstant.convertIdToLong(s)).collect(Collectors.toList())));
|
|
|
+ if (Objects.nonNull(customFlowVarDto.getModelType()) && customFlowVarDto.getModelType() == TFCustomModelTypeEnum.USER_FIXED) {
|
|
|
+ if (customFlowVarDto.getApproveUserType() == CustomFlowApproveUserTypeEnum.USER) {
|
|
|
+ Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
+ if (customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.SOME) {
|
|
|
+ varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
+ } else {
|
|
|
+ varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
+ }
|
|
|
+ } else if (customFlowVarDto.getApproveUserType() == CustomFlowApproveUserTypeEnum.ROLE) {
|
|
|
+ roleGroupMemberMatchParams = Objects.isNull(roleGroupMemberMatchParams) ? new SysRoleGroupMemberMatchParams() : roleGroupMemberMatchParams;
|
|
|
+ if (Objects.isNull(roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap()) || roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap().size() == 0) {
|
|
|
+ flowRoleGroupMemberMatchMap = new LinkedHashMap<>();
|
|
|
+ } else {
|
|
|
+ flowRoleGroupMemberMatchMap = roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap();
|
|
|
+ }
|
|
|
+ if (flowRoleGroupMemberMatchMap.size() == 0) {
|
|
|
+ flowRoleGroupMemberMatchMap.computeIfAbsent(entry.getKey(), v -> new SysRoleGroupMemberMatch(customFlowVarDto.getApproveRoleIds().stream().map(s -> SystemConstant.convertIdToLong(s)).collect(Collectors.toList()), approveId));
|
|
|
+ } else {
|
|
|
+ flowRoleGroupMemberMatchMap.computeIfAbsent(entry.getKey(), v -> new SysRoleGroupMemberMatch(customFlowVarDto.getApproveRoleIds().stream().map(s -> SystemConstant.convertIdToLong(s)).collect(Collectors.toList())));
|
|
|
+ }
|
|
|
+ roleGroupMemberMatchParams.setFlowRoleGroupMemberMatchMap(flowRoleGroupMemberMatchMap);
|
|
|
}
|
|
|
- roleGroupMemberMatchParams.setFlowRoleGroupMemberMatchMap(flowRoleGroupMemberMatchMap);
|
|
|
+ } else if (Objects.nonNull(customFlowVarDto.getModelType()) && customFlowVarDto.getModelType() == TFCustomModelTypeEnum.APPROVE_SET) {
|
|
|
+ varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds());
|
|
|
}
|
|
|
} else {
|
|
|
varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().get(0));
|
|
@@ -347,6 +351,19 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
tfFlowApproveService.save(tfFlowApprove);
|
|
|
|
|
|
Long objectId = (Long) map.get(SystemConstant.OBJECT_ID);
|
|
|
+// //TODO 测试用
|
|
|
+// if (flowType == TFCustomTypeEnum.ELECTRON_FLOW) {//如果是电子交卷审核,就查询命题任务
|
|
|
+// ExamTask examTask = examTaskService.getById(objectId);
|
|
|
+// examTask.setFlowId(SystemConstant.convertIdToLong(flowId));
|
|
|
+// examTaskService.updateById(examTask);
|
|
|
+// }
|
|
|
+//
|
|
|
+// String id = (String) map.get(SystemConstant.FLOW_ENTITY_ID);
|
|
|
+// List<TFFlowJoin> tfFlowJoinList = tfFlowJoinService.findByObjectId(objectId);
|
|
|
+// tfFlowJoinList.get(0).setFlowEntityId(SystemConstant.convertIdToLong(id));
|
|
|
+// tfFlowJoinList.get(0).setFlowId(SystemConstant.convertIdToLong(flowId));
|
|
|
+// tfFlowJoinList.get(0).setObjectTable(flowType.getTable());
|
|
|
+// tfFlowJoinService.updateById(tfFlowJoinList.get(0));
|
|
|
tfFlowLogService.save(new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), SystemConstant.convertIdToLong(flowId), objectId, sysUser.getId(), sysUser.getId(), "提交流程", approveId, FlowApproveOperationEnum.SUBMIT, flowType.getTable()));
|
|
|
}
|
|
|
|
|
@@ -390,6 +407,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(flowId);
|
|
|
Map<String, Object> flowProcessVarMap = this.getFlowProcessVarMap(tfCustomFlowEntity);
|
|
|
|
|
|
+ TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(tfCustomFlowEntity.gettFCustomFlowId());
|
|
|
+ Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程数据为空"));
|
|
|
+
|
|
|
+ if (Objects.isNull(tfCustomFlow.getEnable()) || !tfCustomFlow.getEnable()) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("自定义流程未启用");
|
|
|
+ }
|
|
|
String remark = null;
|
|
|
FlowTaskResult currFlowTaskResult = null, nextFlowTaskResult = null;
|
|
|
Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
|
|
@@ -399,6 +422,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Gson gson = new Gson();
|
|
|
Integer nrOfCompletedInstances = null, nrOfInstances = null;
|
|
|
boolean multiInstance = false;
|
|
|
+ FlowApprovePassEnum approvePass = null;
|
|
|
if (currFlow instanceof UserTask) {
|
|
|
UserTask userTask = (UserTask) currFlow;
|
|
|
String id = userTask.getId().substring(userTask.getId().length() - 1, userTask.getId().length());
|
|
@@ -412,7 +436,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
//流程流水日志
|
|
|
tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, tfFlowJoin.getObjectId(), sysUser.getId(), sysUser.getId(), remark, tfFlowJoin.getObjectTable());
|
|
|
//判断流程审批是通过还是驳回
|
|
|
- FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
|
+ approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
|
|
|
Map<String, FlowTaskResult> setupMap = (Map<String, FlowTaskResult>) flowProcessVarMap.get(SystemConstant.SETUP_MAP);
|
|
|
//获取当前流程和下一流程setup
|
|
|
currFlowTaskResult = gson.fromJson(gson.toJson(setupMap.get(userTask.getId())), FlowTaskResult.class);
|
|
@@ -482,7 +506,10 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
this.getAgginess(nextFlowTaskResult,
|
|
|
gson,
|
|
|
map,
|
|
|
- agginessMap);
|
|
|
+ agginessMap,
|
|
|
+ approvePass,
|
|
|
+ flowProcessVarMap,
|
|
|
+ tfCustomFlowEntity);
|
|
|
}
|
|
|
this.setApproveInfo(tfFlowApprove,
|
|
|
tfFlowLog,
|
|
@@ -603,23 +630,62 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param gson
|
|
|
* @param map
|
|
|
* @param agginessMap
|
|
|
+ * @param approvePass
|
|
|
+ * @param flowProcessVarMap
|
|
|
+ * @param tfCustomFlowEntity
|
|
|
*/
|
|
|
protected void getAgginess(FlowTaskResult nextFlowTaskResult,
|
|
|
Gson gson,
|
|
|
Map<String, Object> map,
|
|
|
- Map<String, CustomFlowVarDto> agginessMap) {
|
|
|
+ Map<String, CustomFlowVarDto> agginessMap,
|
|
|
+ FlowApprovePassEnum approvePass,
|
|
|
+ Map<String, Object> flowProcessVarMap,
|
|
|
+ TFCustomFlowEntity tfCustomFlowEntity) {
|
|
|
if (Objects.nonNull(agginessMap.get(nextFlowTaskResult.getTaskKey()))) {
|
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
|
- if (Objects.nonNull(customFlowVarDto.getFlowTaskVar()) && customFlowVarDto.getFlowTaskVar().contains(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST)) {
|
|
|
- Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
- if (customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.SOME) {
|
|
|
- map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
- } else {
|
|
|
- map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
+ if (Objects.nonNull(nextFlowTaskResult.getModelType()) && nextFlowTaskResult.getModelType() == TFCustomModelTypeEnum.APPROVE_SET) {
|
|
|
+ List<Long> approveUserIds = (List<Long>) map.get(SystemConstant.APPROVE_USER_IDS);
|
|
|
+ if (approvePass == FlowApprovePassEnum.PASS && Objects.nonNull(approveUserIds) && approveUserIds.size() > 0) {
|
|
|
+ List<String> approveIds = approveUserIds.stream().map(s -> String.valueOf(s)).collect(Collectors.toList());
|
|
|
+ nextFlowTaskResult.setApproveIds(approveIds);
|
|
|
+ customFlowVarDto.setApproveIds(nextFlowTaskResult.getApproveIds());
|
|
|
+ Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
+ ApproveUserResult approveUserResult = sysUserService.findByIds(set.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ customFlowVarDto.setApproveUserNames(approveUserResult.getPendApproveUsers());
|
|
|
+ agginessMap.put(nextFlowTaskResult.getTaskKey(), customFlowVarDto);
|
|
|
+
|
|
|
+ flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
|
|
|
+ Map<String, Object> varMap = JacksonUtil.readJson(tfCustomFlowEntity.getFlowProcessVar(), Map.class);
|
|
|
+ varMap.put(SystemConstant.FLOW_PROCESS_VAR_MAP, flowProcessVarMap);
|
|
|
+ tfCustomFlowEntity.setFlowProcessVar(JacksonUtil.parseJson(varMap));
|
|
|
+ tfCustomFlowEntityService.updateById(tfCustomFlowEntity);
|
|
|
}
|
|
|
+ setFlowTaskVar(customFlowVarDto, map);
|
|
|
+ } else {
|
|
|
+ setFlowTaskVar(customFlowVarDto, map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置下一步值
|
|
|
+ *
|
|
|
+ * @param customFlowVarDto
|
|
|
+ * @param map
|
|
|
+ */
|
|
|
+ protected void setFlowTaskVar(CustomFlowVarDto customFlowVarDto, Map<String, Object> map) {
|
|
|
+ if (Objects.nonNull(customFlowVarDto.getFlowTaskVar()) && customFlowVarDto.getFlowTaskVar().contains(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST)) {
|
|
|
+ Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
+ if (Objects.isNull(set) || set.size() == 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未设置审批人");
|
|
|
+ }
|
|
|
+ if (customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.SOME) {
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
} else {
|
|
|
- map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), v -> customFlowVarDto.getApproveIds().get(0));
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), v -> customFlowVarDto.getApproveIds().get(0));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1017,8 +1083,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
process.addFlowElement(createStartEvent());
|
|
|
//默认在开始节点后新增一个审批节点
|
|
|
customFlowDefaultDto = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
|
- setupMap.put(customFlowDefaultDto.getFlowTaskId(), new FlowTaskResult(customFlowDefaultDto.getContent(), customFlowDefaultDto.getFlowTaskId(), customFlowDefaultDto.getSetup()));
|
|
|
- agginessMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, new ArrayList(Arrays.asList("")), null, null, null));
|
|
|
+ setupMap.put(customFlowDefaultDto.getFlowTaskId(), new FlowTaskResult(customFlowDefaultDto.getContent(), customFlowDefaultDto.getFlowTaskId(), customFlowDefaultDto.getSetup(), customFlowSaveDto.getModelType()));
|
|
|
+ agginessMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, new ArrayList(Arrays.asList("")), null, null, null, null, null, null, customFlowSaveDto.getModelType()));
|
|
|
process.addFlowElement(createUserTask(CustomFlowTypeEnum.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;
|
|
|
case PROCESS://过程节点
|
|
@@ -1030,37 +1096,47 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
List<String> approveUserIds = new ArrayList<>();//审批用户
|
|
|
List<String> copyUserIds = new ArrayList<>();//抄送用户
|
|
|
List<String> approveRoleIds = null;//审批角色
|
|
|
+ List<String> approveUserSelectRolesIds = null;//发起人指定审批角色
|
|
|
+ ApproveUserResult approveUserResult = null;
|
|
|
+ ApproveUserResult approveUserResultCopyUser = null;
|
|
|
//抄送用户
|
|
|
if (Objects.nonNull(customFlowPropertyDto.getCopyForUsers()) && customFlowPropertyDto.getCopyForUsers().size() > 0) {
|
|
|
copyUserIds.addAll(customFlowPropertyDto.getCopyForUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
|
}
|
|
|
if (Objects.nonNull(customFlowDto.getProperty())) {
|
|
|
- //选人属性
|
|
|
- switch (customFlowPropertyDto.getApproveUserType()) {
|
|
|
- case USER://用户
|
|
|
- if (Objects.nonNull(customFlowPropertyDto.getApproveUsers()) && customFlowPropertyDto.getApproveUsers().size() > 0) {
|
|
|
- approveUserIds.addAll(customFlowPropertyDto.getApproveUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
|
- }
|
|
|
- break;
|
|
|
- case ROLE://角色
|
|
|
- if (Objects.nonNull(customFlowPropertyDto.getApproveRoles()) && customFlowPropertyDto.getApproveRoles().size() > 0) {
|
|
|
- approveRoleIds = customFlowPropertyDto.getApproveRoles().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList());
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- ApproveUserResult approveUserResult = null;
|
|
|
- if (approveUserIds.size() > 0) {
|
|
|
- Set<String> set = new LinkedHashSet(approveUserIds);
|
|
|
- approveUserResult = sysUserService.findByIds(set.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
- }
|
|
|
- ApproveUserResult approveUserResultCopyUser = null;
|
|
|
- if (copyUserIds.size() > 0) {
|
|
|
- Set<String> copyUserSet = new LinkedHashSet(copyUserIds);
|
|
|
- approveUserResultCopyUser = sysUserService.findByIds(copyUserSet.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ if (customFlowSaveDto.getModelType() == TFCustomModelTypeEnum.APPROVE_SET) {
|
|
|
+ if ((Objects.nonNull(customFlowPropertyDto.getApproveUserSelectRange())
|
|
|
+ && customFlowPropertyDto.getApproveUserSelectRange() == CustomFlowApproveUserSelectRangeEnum.ROLE)
|
|
|
+ && (Objects.nonNull(customFlowPropertyDto.getApproveUserSelectRoles()) &&
|
|
|
+ customFlowPropertyDto.getApproveUserSelectRoles().size() > 0)) {
|
|
|
+ approveUserSelectRolesIds = customFlowPropertyDto.getApproveUserSelectRoles().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ } else if (customFlowSaveDto.getModelType() == TFCustomModelTypeEnum.USER_FIXED) {
|
|
|
+ //选人属性
|
|
|
+ switch (customFlowPropertyDto.getApproveUserType()) {
|
|
|
+ case USER://用户
|
|
|
+ if (Objects.nonNull(customFlowPropertyDto.getApproveUsers()) && customFlowPropertyDto.getApproveUsers().size() > 0) {
|
|
|
+ approveUserIds.addAll(customFlowPropertyDto.getApproveUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ROLE://角色
|
|
|
+ if (Objects.nonNull(customFlowPropertyDto.getApproveRoles()) && customFlowPropertyDto.getApproveRoles().size() > 0) {
|
|
|
+ approveRoleIds = customFlowPropertyDto.getApproveRoles().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (approveUserIds.size() > 0) {
|
|
|
+ Set<String> set = new LinkedHashSet(approveUserIds);
|
|
|
+ approveUserResult = sysUserService.findByIds(set.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ if (copyUserIds.size() > 0) {
|
|
|
+ Set<String> copyUserSet = new LinkedHashSet(copyUserIds);
|
|
|
+ approveUserResultCopyUser = sysUserService.findByIds(copyUserSet.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
}
|
|
|
- agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds, node.getTask().getProperty().getApproveUserType(), node.getTask().getProperty().getMultipleUserApproveType(), node.getTask().getProperty().getRejectType(), node.getTask().getProperty().getRejectResubmitType(), Objects.nonNull(approveUserResult) ? approveUserResult.getPendApproveUsers() : null, copyUserIds, Objects.nonNull(approveUserResultCopyUser) ? approveUserResultCopyUser.getPendApproveUsers() : null, approveRoleIds));
|
|
|
+ agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds, node.getTask().getProperty().getApproveUserType(), node.getTask().getProperty().getMultipleUserApproveType(), node.getTask().getProperty().getRejectType(), node.getTask().getProperty().getRejectResubmitType(), Objects.nonNull(approveUserResult) ? approveUserResult.getPendApproveUsers() : null, copyUserIds, Objects.nonNull(approveUserResultCopyUser) ? approveUserResultCopyUser.getPendApproveUsers() : null, approveRoleIds, approveUserSelectRolesIds, customFlowPropertyDto.getApproveUserCountType(), customFlowPropertyDto.getApproveUserSelectRange(), customFlowSaveDto.getModelType()));
|
|
|
if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
|
|
|
//驳回属性
|
|
|
switch (customFlowPropertyDto.getRejectType()) {
|
|
@@ -1159,8 +1235,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- flowTaskResult.setApproveRoleIds(approveRoleIds);
|
|
|
- flowTaskResult.setApproveUserType(customFlowPropertyDto.getApproveUserType());
|
|
|
+ flowTaskResult.setInfo(approveRoleIds,
|
|
|
+ customFlowPropertyDto.getApproveUserType(),
|
|
|
+ customFlowSaveDto.getModelType(),
|
|
|
+ customFlowPropertyDto.getApproveUserCountType(),
|
|
|
+ customFlowPropertyDto.getApproveUserSelectRange(),
|
|
|
+ customFlowPropertyDto.getApproveUserSelectRoles());
|
|
|
process.addFlowElement(createUserTask(CustomFlowTypeEnum.USER_TASK.getId() + i, Objects.nonNull(customFlowDto.getContent()) && !Objects.equals(customFlowDto.getContent(), "") ? customFlowDto.getContent() : DefaultInstanceConvertToMultiInstance.USER_TASK_APPROVE_NAME, approveUserIds, customFlowPropertyDto.getMultipleUserApproveType()));
|
|
|
break;
|
|
|
case END://结束节点
|
|
@@ -1201,6 +1281,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
process.addFlowElement(createSequenceFlow(flowTaskNode.getBefore().getTask().getFlowTaskId(), flowTaskNode.getTask().getFlowTaskId(), normalSequenceId, FlowApprovePassEnum.PASS.getTitle(), null));
|
|
|
}
|
|
|
List<CustomFlowSequenceDto> beforeFlowTaskIdsList = flowTaskNode.getTask().getBeforeFlowTaskIds();
|
|
|
+ beforeFlowTaskIdsList = Objects.isNull(beforeFlowTaskIdsList) ? new ArrayList<>() : beforeFlowTaskIdsList;
|
|
|
if (Objects.nonNull(beforeFlowTaskIdsList)) {
|
|
|
for (CustomFlowSequenceDto c : beforeFlowTaskIdsList) {
|
|
|
String gatewaySequenceId = DefaultInstanceConvertToMultiInstance.SEQUENCE_NAME + sequenceId.getAndIncrement();
|
|
@@ -1337,6 +1418,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
customFlowGatewayDto.setFlowTaskIds(flowTaskIds);
|
|
|
approveDataMap.put(node.getTask().getFlowTaskId(), customFlowGatewayDto);
|
|
|
List<CustomFlowSequenceDto> customFlowSequenceGateWayDtoList = customFlowExclusiveGatewayTaskNode.getTask().getBeforeFlowTaskIds();
|
|
|
+ customFlowSequenceGateWayDtoList = Objects.isNull(customFlowSequenceGateWayDtoList) ? new ArrayList<>() : customFlowSequenceGateWayDtoList;
|
|
|
customFlowSequenceGateWayDtoList.addAll(flowTaskIds.get(customFlowExclusiveGatewayTaskNode.getTask().getFlowTaskId()));
|
|
|
customFlowExclusiveGatewayTaskNode.getTask().setBeforeFlowTaskIds(customFlowSequenceGateWayDtoList);
|
|
|
}
|
|
@@ -1396,7 +1478,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
List<String> approveUserIds = new ArrayList(Arrays.asList(String.valueOf(approveId)));
|
|
|
Set<String> set = new LinkedHashSet(approveUserIds);
|
|
|
ApproveUserResult approveUserResult = sysUserService.findByIds(set.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
- agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, approveUserIds, approveUserResult.getPendApproveUsers(), null, null, null));
|
|
|
+ agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, approveUserIds, approveUserResult.getPendApproveUsers(), null, null, null, null, null, null, tfCustomFlow.getModelType()));
|
|
|
flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
|
|
|
|
|
|
map.computeIfAbsent(SystemConstant.ID, v -> tfCustomFlow.getFlowKey());
|
|
@@ -1452,6 +1534,24 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
|
|
|
TaskInfoResult taskInfoResult = new TaskInfoResult(flowId, task.getName(), task.getTaskDefinitionKey(), currFlowTaskResult.getSetup());
|
|
|
+ taskInfoResult.setInfo(currFlowTaskResult.getApproveRoleIds(),
|
|
|
+ currFlowTaskResult.getApproveUserType(),
|
|
|
+ currFlowTaskResult.getModelType(),
|
|
|
+ currFlowTaskResult.getApproveUserCountType(),
|
|
|
+ currFlowTaskResult.getApproveUserSelectRange(),
|
|
|
+ currFlowTaskResult.getApproveUserSelectRoles());
|
|
|
+ CustomFlowVarDto currCustomFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(currFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
|
+ taskInfoResult.setApproveUserNames(currCustomFlowVarDto.getApproveUserNames());
|
|
|
+
|
|
|
+ int currSetup = currFlowTaskResult.getSetup().intValue();
|
|
|
+ currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
|
|
|
+ FlowTaskResult nextFlowTaskResult = this.getNextFlowTaskResult(setupMap, gson, currSetup, null);
|
|
|
+ nextFlowTaskResult.setFlowId(flowId);
|
|
|
+ CustomFlowVarDto nextCustomFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
|
+ if (Objects.nonNull(nextCustomFlowVarDto) && !Objects.equals(nextFlowTaskResult.getTaskKey(), CustomFlowTypeEnum.END.getId())) {
|
|
|
+ nextFlowTaskResult.setApproveUserNames(nextCustomFlowVarDto.getApproveUserNames());
|
|
|
+ }
|
|
|
+
|
|
|
List<FlowTaskResult> flowTaskResultList = null;
|
|
|
if (Objects.nonNull(approveRejectMap.get(task.getTaskDefinitionKey()))) {
|
|
|
flowTaskResultList = new ArrayList<>();
|
|
@@ -1466,6 +1566,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
}
|
|
|
taskInfoResult.setRejectSetupList(flowTaskResultList);
|
|
|
+ taskInfoResult.setNextFlowTaskResult(nextFlowTaskResult);
|
|
|
return taskInfoResult;
|
|
|
}
|
|
|
|