|
@@ -121,10 +121,11 @@ 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)) {
|
|
|
+ Set<String> set = new LinkedHashSet(customFlowVarDto.getApproveIds());
|
|
|
if (customFlowVarDto.getMultipleUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.SOME) {
|
|
|
- varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
+ varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
} else {
|
|
|
- varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds());
|
|
|
+ varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
}
|
|
|
} else {
|
|
|
varMap.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds().get(0));
|
|
@@ -535,10 +536,11 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
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 -> customFlowVarDto.getApproveIds().toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set.toString().replaceAll("\\[", "").replaceAll("\\]", "").trim());
|
|
|
} else {
|
|
|
- map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> customFlowVarDto.getApproveIds());
|
|
|
+ map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), s -> set);
|
|
|
}
|
|
|
} else {
|
|
|
map.computeIfAbsent(customFlowVarDto.getFlowTaskVar(), v -> customFlowVarDto.getApproveIds().get(0));
|
|
@@ -837,8 +839,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
List<String> approveIds = customFlowVarAllDto.getApproveIds();
|
|
|
approveIds.remove(String.valueOf(sysUser.getId()));
|
|
|
approveIds.add(userId);
|
|
|
+ Set<String> set = new LinkedHashSet(approveIds);
|
|
|
allAgginessMap.put(userTask.getId(), customFlowVarAllDto);
|
|
|
- tfFlowLog.setPendApproveId(approveIds.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
+ tfFlowLog.setPendApproveId(set.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
}
|
|
|
tfFlowApprove.setAllAssignee(JacksonUtil.parseJson(allAgginessMap));
|
|
|
} else {
|
|
@@ -846,10 +849,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
|
+ Set<String> set = removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
|
+ tfFlowLog.setPendApproveId(set.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
}
|
|
|
}
|
|
|
- ApproveUserResult approveUserResult = sysUserService.findByIds(customFlowVarDto.getApproveIds().stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ 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(userTask.getId(), customFlowVarDto);
|
|
|
tfFlowApprove.setTransferAssignee(JacksonUtil.parseJson(agginessMap));
|
|
@@ -860,7 +865,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
tfFlowLog.setApproveUserApproveType(customFlowVarDto.getMultipleUserApproveType());
|
|
|
tfFlowLogService.save(tfFlowLog);
|
|
|
|
|
|
- taskService.setAssignee(taskId, userId);
|
|
|
+ if (!multiInstance) {
|
|
|
+ taskService.deleteCandidateUser(taskId, String.valueOf(sysUser.getId()));
|
|
|
+ taskService.addCandidateUser(taskId, userId);
|
|
|
+ } else {
|
|
|
+ taskService.setAssignee(taskId, userId);
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -871,10 +881,11 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param userId
|
|
|
* @param exchangeUserId
|
|
|
*/
|
|
|
- protected void removeApproveUserId(CustomFlowVarDto customFlowVarDto, String userId, String exchangeUserId) {
|
|
|
+ protected Set removeApproveUserId(CustomFlowVarDto customFlowVarDto, String userId, String exchangeUserId) {
|
|
|
List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
|
approveIds.remove(userId);
|
|
|
approveIds.add(exchangeUserId);
|
|
|
+ return new LinkedHashSet(approveIds);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -949,13 +960,21 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
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) {
|
|
|
+// List<SysUser> sysUserList = sysUserService.findByRoleIds(customFlowPropertyDto.getApproveRoles().stream().map(x -> x.getId()).collect(Collectors.toList()));
|
|
|
+// approveUserIds.addAll(sysUserList.stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- ApproveUserResult approveUserResult = sysUserService.findByIds(approveUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ Set<String> set = new LinkedHashSet(approveUserIds);
|
|
|
+ ApproveUserResult approveUserResult = sysUserService.findByIds(set.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
ApproveUserResult approveUserResultCopyUser = null;
|
|
|
if (copyUserIds.size() > 0) {
|
|
|
- approveUserResultCopyUser = sysUserService.findByIds(copyUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ 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(), approveUserResult.getPendApproveUsers(), copyUserIds, Objects.nonNull(approveUserResultCopyUser) ? approveUserResultCopyUser.getPendApproveUsers() : null));
|
|
|
if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
|
|
@@ -1289,7 +1308,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
|
|
|
List<String> approveUserIds = new ArrayList(Arrays.asList(String.valueOf(approveId)));
|
|
|
- ApproveUserResult approveUserResult = sysUserService.findByIds(approveUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
|
|
|
+ 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));
|
|
|
flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
|
|
|
|
|
@@ -1305,6 +1325,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
map.remove(SystemConstant.APPROVE_ID);
|
|
|
map.remove(SystemConstant.PROCESS_DEFINITION_ID);
|
|
|
map.remove(SystemConstant.FLOW_STATUS);
|
|
|
+ map.remove(SystemConstant.OBJECT_DATA);
|
|
|
+ map.remove(SystemConstant.FLOW_SUBMIT);
|
|
|
map.computeIfAbsent(SystemConstant.ACT_FLOW_ID, v -> tfCustomFlow.getActFlowId());
|
|
|
tfCustomFlowEntity.setFlowProcessVar(JacksonUtil.parseJson(map));
|
|
|
tfCustomFlow.setUpdateId(sysUser.getId());
|
|
@@ -1370,7 +1392,6 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
*/
|
|
|
@Override
|
|
|
public FlowViewResult getFlowView(Long flowId) {
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.findByFlowId(flowId);
|
|
|
Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程实体数据为空"));
|
|
|
|