fix: 制修订流程其他起草人上传节点

This commit is contained in:
2024-08-16 15:24:30 +08:00
parent d1c570f989
commit abaf6bb5d8
2 changed files with 38 additions and 26 deletions
@@ -180,6 +180,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
actFlowCommonService.updateApprovalInfo(commonVO, taskId, true);
// 自动完成第一个任务
actFlowCommonService.completeTask(taskId, userId);
// 处理其他起草人上传节点
this.processOtherDraftUploadTask(processInstanceId);
}
private Map<String, Object> setVariables(ESRevisionDataVO revisionData) {
@@ -337,30 +339,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// 某些节点需要对数据进行特殊处理
switch (xmlNodeId) {
case OTHER_DRAFT_USER_UPLOAD:
boolean findFlag = false;
otherDraftUserVOS.forEach(o -> o.setOperateType(null));
for (OtherDraftUserVO o : otherDraftUserVOS) {
if (findFlag) {
o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue());
continue;
}
if (o.getUser().equals(userId)) {
if (StrUtil.isBlank(o.getTaskId())) {
o.setOperateType(OperateTypeEnum.UPLOAD.getValue());
o.setTaskId(taskId);
findFlag = true;
} else {
if (!taskId.equals(o.getTaskId())) {
o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue());
}
}
} else {
o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue());
}
}
data.setOtherDraftUserVOS(otherDraftUserVOS);
data.setOtherDrafterUploadFileJson(otherDraftUserVOS);
updateById(data);
otherDraftUserVOS = otherDraftUserVOS.stream()
.filter(o -> o.getTaskId().equals(taskId)).collect(Collectors.toList());
break;
case CONTACT_USER_DISTRIBUTE:
if (pass) {
@@ -680,6 +660,38 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
runtimeService.setVariable(processInstanceId, "pass", pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
if (xmlNodeId.equals(MAIN_DRAFT_USER_DISTRIBUTE)) {
this.processOtherDraftUploadTask(processInstanceId);
}
}
private void processOtherDraftUploadTask(String prcId) {
LambdaQueryWrapper<ProcessEsRevision> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessEsRevision::getProcessInstanceId, prcId);
ProcessEsRevision data = getOne(queryWrapper);
// 判断是否分发 设置流程变量
List<OtherDraftUserVO> otherDraftUserVOS = data.parseOtherDraftUserVOS();
if (otherDraftUserVOS == null || otherDraftUserVOS.isEmpty()) {
return;
}
// 获取所有分发节点
LambdaQueryWrapper<ProcessApprovalRecord> parWrapper = new LambdaQueryWrapper<>();
parWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId);
parWrapper.eq(ProcessApprovalRecord::getNodeId, OTHER_DRAFT_USER_UPLOAD);
List<ProcessApprovalRecord> processApprovalRecords = parService.list(parWrapper);
Map<String, List<ProcessApprovalRecord>> map =
processApprovalRecords.stream().collect(Collectors.groupingBy(ProcessApprovalRecord::getUserId));
otherDraftUserVOS.forEach(o -> {
List<ProcessApprovalRecord> list = map.get(o.getUser());
if (list != null && !list.isEmpty()) {
o.setTaskId(list.get(0).getTaskId());
list.remove(0);
}
map.put(o.getUser(), list);
});
data.setOtherDraftUserVOS(otherDraftUserVOS);
data.setOtherDrafterUploadFileJson(otherDraftUserVOS);
updateById(data);
}
private void replaceAutoStartDraft(ESRevisionDataVO revisionData, String processInstanceId) {