feat(REQ-7125) - 调整查询审批日志时,审批人指定按钮的处理

This commit is contained in:
wangli 2026-02-28 18:38:38 +08:00
parent 6d8ae99079
commit 2b106b7609
2 changed files with 52 additions and 0 deletions

View File

@ -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) {

View File

@ -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())