|
@@ -453,7 +453,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowLog,
|
|
tfFlowLog,
|
|
sysUser,
|
|
sysUser,
|
|
map,
|
|
map,
|
|
- multiInstance,
|
|
|
|
|
|
+ currFlow,
|
|
nrOfCompletedInstances,
|
|
nrOfCompletedInstances,
|
|
nrOfInstances,
|
|
nrOfInstances,
|
|
currFlowTaskResult,
|
|
currFlowTaskResult,
|
|
@@ -486,7 +486,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
* @param tfFlowLog
|
|
* @param tfFlowLog
|
|
* @param sysUser
|
|
* @param sysUser
|
|
* @param map
|
|
* @param map
|
|
- * @param multiInstance
|
|
|
|
|
|
+ * @param currFlow
|
|
* @param nrOfCompletedInstances
|
|
* @param nrOfCompletedInstances
|
|
* @param nrOfInstances
|
|
* @param nrOfInstances
|
|
* @param currFlowTaskResult
|
|
* @param currFlowTaskResult
|
|
@@ -500,7 +500,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
TFFlowLog tfFlowLog,
|
|
TFFlowLog tfFlowLog,
|
|
SysUser sysUser,
|
|
SysUser sysUser,
|
|
Map<String, Object> map,
|
|
Map<String, Object> map,
|
|
- boolean multiInstance,
|
|
|
|
|
|
+ FlowNode currFlow,
|
|
Integer nrOfCompletedInstances,
|
|
Integer nrOfCompletedInstances,
|
|
Integer nrOfInstances,
|
|
Integer nrOfInstances,
|
|
FlowTaskResult currFlowTaskResult,
|
|
FlowTaskResult currFlowTaskResult,
|
|
@@ -523,13 +523,38 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
tfFlowLog.setPaperAttachmentId((String) map.get(SystemConstant.PAPAER_ATTACHMENT_IDS));
|
|
tfFlowLog.setPaperAttachmentId((String) map.get(SystemConstant.PAPAER_ATTACHMENT_IDS));
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
if (Objects.nonNull(customFlowVarDto)) {
|
|
if (Objects.nonNull(customFlowVarDto)) {
|
|
- if (tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.APPROVE && multiInstance && Objects.nonNull(nrOfCompletedInstances)
|
|
|
|
|
|
+ if (tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.APPROVE && Objects.nonNull(nrOfCompletedInstances)
|
|
&& Objects.nonNull(nrOfInstances)
|
|
&& Objects.nonNull(nrOfInstances)
|
|
&& nrOfCompletedInstances.intValue() != nrOfInstances.intValue()) {
|
|
&& nrOfCompletedInstances.intValue() != nrOfInstances.intValue()) {
|
|
- tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().subList(nrOfCompletedInstances, nrOfInstances).toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
|
|
+ if (currFlow.getBehavior() instanceof SequentialMultiInstanceBehavior) {//串行
|
|
|
|
+ tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().subList(nrOfCompletedInstances, nrOfInstances).toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
+ } else if (currFlow.getBehavior() instanceof ParallelMultiInstanceBehavior) {//并行
|
|
|
|
+ Map<String, CustomFlowVarDto> allAgginessMap = null;
|
|
|
|
+ CustomFlowVarDto customFlowVarAllDto = null;
|
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getAllAssignee())) {
|
|
|
|
+ allAgginessMap = JacksonUtil.readJson(tfFlowApprove.getAllAssignee(), Map.class);
|
|
|
|
+ customFlowVarAllDto = gson.fromJson(gson.toJson(allAgginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
|
|
|
|
+ } else {
|
|
|
|
+ allAgginessMap = new HashMap<>();
|
|
|
|
+ customFlowVarAllDto = customFlowVarDto;
|
|
|
|
+ }
|
|
|
|
+ allAgginessMap.put(nextFlowTaskResult.getTaskKey(), customFlowVarAllDto);
|
|
|
|
+ List<String> approveIds = customFlowVarAllDto.getApproveIds();
|
|
|
|
+ approveIds.remove(String.valueOf(sysUser.getId()));
|
|
|
|
+ if (Objects.nonNull(approveIds) && approveIds.size() > 0) {
|
|
|
|
+ tfFlowLog.setPendApproveId(approveIds.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
+ }
|
|
|
|
+ tfFlowApprove.setAllAssignee(JacksonUtil.parseJson(allAgginessMap));
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getAllAssignee())) {
|
|
|
|
+ Map<String, CustomFlowVarDto> allAgginessMap = JacksonUtil.readJson(tfFlowApprove.getAllAssignee(), Map.class);
|
|
|
|
+ allAgginessMap.remove(currFlowTaskResult.getTaskKey());
|
|
|
|
+ tfFlowApprove.setAllAssignee(allAgginessMap.size() == 0 ? null : JacksonUtil.parseJson(allAgginessMap));
|
|
|
|
+ }
|
|
tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
}
|
|
}
|
|
|
|
+ tfFlowLog.setApproveUserApproveType(customFlowVarDto.getMultipleUserApproveType());
|
|
}
|
|
}
|
|
map.put(SystemConstant.APPROVE_TF_FLOW_LOG, tfFlowLog);
|
|
map.put(SystemConstant.APPROVE_TF_FLOW_LOG, tfFlowLog);
|
|
tfFlowApproveService.saveOrUpdate(tfFlowApprove);
|
|
tfFlowApproveService.saveOrUpdate(tfFlowApprove);
|
|
@@ -1042,40 +1067,53 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
agginessMap = JacksonUtil.readJson(tfFlowApprove.getTransferAssignee(), Map.class);
|
|
agginessMap = JacksonUtil.readJson(tfFlowApprove.getTransferAssignee(), Map.class);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ ExamTask examTask = examTaskService.findByFlowId(SystemConstant.convertIdToLong(flowId));
|
|
|
|
+ SysUser exchangeUser = sysUserService.getById(userId);
|
|
|
|
+ //流程流水日志
|
|
|
|
+ TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), examTask.getFlowId(), examTask.getId(), sysUser.getId(), sysUser.getRealName() + "转" + exchangeUser.getRealName() + "审批", FlowApproveOperationEnum.EXCHANGE, sysUser.getId(), String.valueOf(exchangeUser.getId()));
|
|
Gson gson = new Gson();
|
|
Gson gson = new Gson();
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(userTask.getId())), CustomFlowVarDto.class);
|
|
CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(userTask.getId())), CustomFlowVarDto.class);
|
|
if (customFlowVarDto.getApproveIds().size() == 1) {
|
|
if (customFlowVarDto.getApproveIds().size() == 1) {
|
|
customFlowVarDto.setApproveIds(new ArrayList<>(Arrays.asList(userId)));
|
|
customFlowVarDto.setApproveIds(new ArrayList<>(Arrays.asList(userId)));
|
|
} else {
|
|
} else {
|
|
if (multiInstance && Objects.nonNull(nrOfCompletedInstances)) {
|
|
if (multiInstance && Objects.nonNull(nrOfCompletedInstances)) {
|
|
- if (currFlow.getBehavior() instanceof SequentialMultiInstanceBehavior) {
|
|
|
|
|
|
+ if (currFlow.getBehavior() instanceof SequentialMultiInstanceBehavior) {//串行
|
|
List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
approveIds.remove(nrOfCompletedInstances.intValue());
|
|
approveIds.remove(nrOfCompletedInstances.intValue());
|
|
approveIds.add(nrOfCompletedInstances.intValue(), userId);
|
|
approveIds.add(nrOfCompletedInstances.intValue(), userId);
|
|
- } else if (currFlow.getBehavior() instanceof ParallelMultiInstanceBehavior) {
|
|
|
|
|
|
+ tfFlowLog.setPendApproveId(approveIds.subList(nrOfCompletedInstances, nrOfInstances).toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
+ } else if (currFlow.getBehavior() instanceof ParallelMultiInstanceBehavior) {//并行
|
|
removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getAllAssignee())) {
|
|
|
|
+ Map<String, CustomFlowVarDto> allAgginessMap = JacksonUtil.readJson(tfFlowApprove.getAllAssignee(), Map.class);
|
|
|
|
+ if (Objects.nonNull(allAgginessMap.get(userTask.getId()))) {
|
|
|
|
+ CustomFlowVarDto customFlowVarAllDto = gson.fromJson(gson.toJson(allAgginessMap.get(userTask.getId())), CustomFlowVarDto.class);
|
|
|
|
+ List<String> approveIds = customFlowVarAllDto.getApproveIds();
|
|
|
|
+ approveIds.remove(String.valueOf(sysUser.getId()));
|
|
|
|
+ approveIds.add(userId);
|
|
|
|
+ allAgginessMap.put(userTask.getId(), customFlowVarAllDto);
|
|
|
|
+ tfFlowLog.setPendApproveId(approveIds.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
+ }
|
|
|
|
+ tfFlowApprove.setAllAssignee(JacksonUtil.parseJson(allAgginessMap));
|
|
|
|
+ } else {
|
|
|
|
+ tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().subList(nrOfCompletedInstances, nrOfInstances).toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
agginessMap.put(userTask.getId(), customFlowVarDto);
|
|
agginessMap.put(userTask.getId(), customFlowVarDto);
|
|
- taskService.setAssignee(taskId, userId);
|
|
|
|
-
|
|
|
|
tfFlowApprove.setTransferAssignee(JacksonUtil.parseJson(agginessMap));
|
|
tfFlowApprove.setTransferAssignee(JacksonUtil.parseJson(agginessMap));
|
|
tfFlowApproveService.updateById(tfFlowApprove);
|
|
tfFlowApproveService.updateById(tfFlowApprove);
|
|
|
|
|
|
- ExamTask examTask = examTaskService.findByFlowId(SystemConstant.convertIdToLong(flowId));
|
|
|
|
- SysUser exchangeUser = sysUserService.getById(userId);
|
|
|
|
- //流程流水日志
|
|
|
|
- TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), examTask.getFlowId(), examTask.getId(), sysUser.getId(), sysUser.getRealName() + "转" + exchangeUser.getRealName() + "审批", FlowApproveOperationEnum.EXCHANGE, sysUser.getId(), String.valueOf(exchangeUser.getId()));
|
|
|
|
- if (multiInstance) {
|
|
|
|
- tfFlowLog.setPendApproveId(customFlowVarDto.getApproveIds().subList(nrOfCompletedInstances, nrOfInstances).toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ tfFlowLog.setApproveMultiSetup(Objects.nonNull(nrOfCompletedInstances) ? nrOfCompletedInstances++ : nrOfCompletedInstances);
|
|
tfFlowLog.setApproveSetup(tfFlowApprove.getSetup());
|
|
tfFlowLog.setApproveSetup(tfFlowApprove.getSetup());
|
|
|
|
+ tfFlowLog.setApproveUserApproveType(customFlowVarDto.getMultipleUserApproveType());
|
|
tfFlowLogService.save(tfFlowLog);
|
|
tfFlowLogService.save(tfFlowLog);
|
|
|
|
+
|
|
|
|
+// int i = 1 / 0;
|
|
|
|
+ taskService.setAssignee(taskId, userId);
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|