feat(REQ-7125) - 调整查询审批日志时,审批人指定按钮的处理
This commit is contained in:
parent
6d8ae99079
commit
2b106b7609
@ -204,6 +204,7 @@ import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoPassed_empty;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoRejection_empty;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.human;
|
||||
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.transferToAdmin;
|
||||
import static cn.axzo.workflow.common.enums.BpmnButtonEnum.BPMN_REPOINT;
|
||||
import static cn.axzo.workflow.common.enums.BpmnButtonEnum.BPMN_UPGRADE;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.AND;
|
||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.EXCEPTIONAL;
|
||||
@ -223,6 +224,7 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCES
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.REJECTED;
|
||||
import static cn.axzo.workflow.common.enums.WorkspaceType.GOVERNMENT;
|
||||
import static cn.axzo.workflow.common.enums.WorkspaceType.PROJECT;
|
||||
import static cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo.BUTTON_TYPE_SYSTEM;
|
||||
import static cn.axzo.workflow.common.util.BpmnNativeQueryUtil.countSql;
|
||||
import static cn.axzo.workflow.common.util.BpmnNativeQueryUtil.sqlConnectors;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getActivitySignature;
|
||||
@ -1304,11 +1306,60 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
logVO.setCategory(category.getValue());
|
||||
});
|
||||
|
||||
|
||||
// 判断是否当前审批人是否是从“管理员指定审批人”策略来的,如果是则仅返回“指定审批人”按钮
|
||||
if (!CollectionUtils.isEmpty(calcAdminSpecifyButtons(logVO, dto.getVisitor()))) {
|
||||
return logVO;
|
||||
}
|
||||
|
||||
// 根据传入的访问人计算有权限的按钮
|
||||
calcAuthorizedButtons(logVO, dto.getVisitor());
|
||||
return logVO;
|
||||
}
|
||||
|
||||
private List<BpmnButtonMetaInfo> calcAdminSpecifyButtons(BpmnProcessInstanceLogVO logVO, BpmnTaskDelegateAssigner visitor) {
|
||||
List<BpmnButtonMetaInfo> buttons = new ArrayList<>();
|
||||
if (Objects.nonNull(visitor)) {
|
||||
String ge130Assignee = getGe130Assignee(visitor);
|
||||
String le130Assignee = getLe130Assignee(visitor);
|
||||
|
||||
// 比对当前审批人
|
||||
logVO.getTaskDetails().stream().filter(i -> Objects.equals(PROCESSING, i.getResult())
|
||||
|| (Objects.equals(DELETED, i.getResult()) && Objects.isNull(i.getEndTime())))
|
||||
.findFirst()
|
||||
.map(i -> {
|
||||
List<BpmnTaskDelegateAssigner> list = new ArrayList<>();
|
||||
if (Objects.nonNull(i.getAssigneeSnapshot())) {
|
||||
list.add(i.getAssigneeSnapshot());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(i.getForecastAssignees())) {
|
||||
list.addAll(i.getForecastAssignees());
|
||||
}
|
||||
return list;
|
||||
})
|
||||
.orElse(Collections.emptyList())
|
||||
.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(i -> i.buildAssigneeId().contains(ge130Assignee) || Objects.equals(i.buildAssigneeId_1_2_1(), le130Assignee))
|
||||
.filter(i -> Objects.equals(Boolean.TRUE, i.getIsTransferToAdminSpecify()))
|
||||
.findAny()
|
||||
.ifPresent(i -> {
|
||||
BpmnButtonMetaInfo repoint = new BpmnButtonMetaInfo();
|
||||
repoint.setBtnKey(BPMN_REPOINT.getBtnKey());
|
||||
repoint.setBtnName(BPMN_REPOINT.getBtnName());
|
||||
repoint.setChecked(true);
|
||||
repoint.setDisabled(false);
|
||||
repoint.setType(BUTTON_TYPE_SYSTEM);
|
||||
repoint.setSupportBizType(BPMN_REPOINT.getSupportBizType());
|
||||
buttons.add(repoint);
|
||||
});
|
||||
}
|
||||
|
||||
logVO.setCurrentUserButtons(buttons);
|
||||
logVO.setCustomHiddenButtons(getHiddenCustomButtons(logVO, buttons));
|
||||
return buttons;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BpmnTaskButtonVo findTaskButtons(BpmnTaskButtonSearchDTO taskButtonsSearchDTO) {
|
||||
|
||||
@ -198,6 +198,7 @@ public class TaskEntityEventHandle implements EntityEventHandle<TaskEntity> {
|
||||
}
|
||||
OrgNodeUserDTO firstNodeUser = nodeUsers.get(0);
|
||||
assignee.setNodeId(String.valueOf(firstNodeUser.getTopNodeId()));
|
||||
log.info("buildApproverOrgStructureInfo fetch nodeUser info: {}", JSON.toJSONString(firstNodeUser));
|
||||
assignee.setWorkspaceType(WorkspaceType.fromValue(String.valueOf(firstNodeUser.getWorkspace().getType())));
|
||||
|
||||
OrgStructureSnapshotInfo snapshotInfo = builder.personName(firstNodeUser.getRealName())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user