feat(REQ-7125) - 增加cms 访问审批日志时,对 oms 审批人的信息脱敏处理
This commit is contained in:
parent
c58858b7cc
commit
dd0a5b420a
@ -59,4 +59,10 @@ public class BpmnProcessInstanceLogQueryDTO {
|
||||
*/
|
||||
@ApiModelProperty(value = "是否需要加密", notes = "同一个实例的日志,在不同端[cms/oms]下,审批人的信息需要按一定规则进行隐藏控制")
|
||||
private Boolean encrypt;
|
||||
|
||||
/**
|
||||
* 控制 oms 审批人是否脱敏
|
||||
*/
|
||||
@ApiModelProperty(value = "oms 人员是否脱敏", notes = "true则将 oms 审批人的姓名、头像全部置为空")
|
||||
private Boolean omsApproveDesensitization;
|
||||
}
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
package cn.axzo.workflow.core.conf;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2026-03-04 10:18
|
||||
*/
|
||||
@Data
|
||||
@Component
|
||||
@RefreshScope
|
||||
public class OmsWorkspaceProperty {
|
||||
|
||||
@Value("${oms-workspace.workspaceId}")
|
||||
private Long workspaceId;
|
||||
|
||||
@Value("${oms-workspace.tenantId}")
|
||||
private Long tenantId;
|
||||
|
||||
@Value("${oms-workspace.ouId}")
|
||||
private Long ouId;
|
||||
|
||||
@Value("${oms-workspace.nodeId}")
|
||||
private Long nodeId;
|
||||
}
|
||||
@ -67,7 +67,7 @@ public class CustomActivityTriggerCmd extends AbstractCommand<Void> implements S
|
||||
return null;
|
||||
}
|
||||
|
||||
addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已同意", true);
|
||||
addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已完成", true);
|
||||
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
||||
log.info("CustomActivityTriggerCmd triggerAsync");
|
||||
runtimeService.triggerAsync(dto.getTriggerId());
|
||||
|
||||
@ -61,6 +61,7 @@ import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceLogVO;
|
||||
import cn.axzo.workflow.common.model.response.category.CategoryItemVO;
|
||||
import cn.axzo.workflow.core.common.utils.BpmnCollectionUtils;
|
||||
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
|
||||
import cn.axzo.workflow.core.conf.OmsWorkspaceProperty;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomAbortProcessInstanceAsyncCmd;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomAbortProcessInstanceCmd;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomCancelProcessInstanceAsyncCmd;
|
||||
@ -301,6 +302,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
private ExtAxProcessSignService extAxProcessSignService;
|
||||
@Resource
|
||||
private ExtAxReadRecordService extAxReadRecordService;
|
||||
@Resource
|
||||
private OmsWorkspaceProperty omsWorkspaceProperty;
|
||||
|
||||
@Override
|
||||
public HistoricProcessInstance getProcessInstanceByBusinessKey(String businessKey, @Nullable String tenantId,
|
||||
@ -1698,11 +1701,54 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
getFutureTasks(forecasting, tasks);
|
||||
// 处理是否加密
|
||||
handleEncrypt(dto.getEncrypt(), tasks);
|
||||
// 处理 oms 审批人脱敏
|
||||
handleOmsApproverDesensitization(dto.getOmsApproveDesensitization(), tasks);
|
||||
// reset field forecastAssignees Empty to null;
|
||||
resetCollectionToNull(tasks);
|
||||
return tasks;
|
||||
}
|
||||
|
||||
private void handleOmsApproverDesensitization(Boolean omsApproveDesensitization, List<BpmnTaskInstanceLogVO> tasks) {
|
||||
if (Boolean.FALSE.equals(omsApproveDesensitization)) {
|
||||
return;
|
||||
}
|
||||
tasks.forEach(i -> {
|
||||
if (Objects.nonNull(i.getResult())) {
|
||||
if (Objects.equals(i.getResult(), PROCESSING)) {
|
||||
// 脱敏头像
|
||||
if (Objects.nonNull(i.getAssigneeSnapshot()) && Objects.equals(i.getAssigneeSnapshot().getTenantId(), String.valueOf(omsWorkspaceProperty.getTenantId()))) {
|
||||
// 目前该节点是单人审批
|
||||
i.getAssigneeSnapshot().setAvatar("https://axzo-public.oss-cn-chengdu.aliyuncs.com/app/app/1d718eb672a44247a6e530548dc0100f.svg");
|
||||
} else if (!CollectionUtils.isEmpty(i.getForecastAssignees())) {
|
||||
i.getForecastAssignees().forEach(j -> {
|
||||
j.setAvatar("https://axzo-public.oss-cn-chengdu.aliyuncs.com/app/app/1d718eb672a44247a6e530548dc0100f.svg");
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// 隐藏姓名、脱敏头像
|
||||
if (Objects.nonNull(i.getAssigneeSnapshot())) {
|
||||
// 目前该节点是单人审批
|
||||
i.getAssigneeSnapshot().setAssignerName("");
|
||||
i.getAssigneeSnapshot().setAvatar("https://axzo-public.oss-cn-chengdu.aliyuncs.com/app/app/1d718eb672a44247a6e530548dc0100f.svg");
|
||||
} else if (!CollectionUtils.isEmpty(i.getForecastAssignees())) {
|
||||
i.getForecastAssignees().forEach(j -> {
|
||||
j.setAssignerName("");
|
||||
j.setAvatar("https://axzo-public.oss-cn-chengdu.aliyuncs.com/app/app/1d718eb672a44247a6e530548dc0100f.svg");
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 未来节点
|
||||
if (!CollectionUtils.isEmpty(i.getForecastAssignees())) {
|
||||
i.getForecastAssignees().forEach(j -> {
|
||||
j.setAssignerName("");
|
||||
j.setAvatar("https://axzo-public.oss-cn-chengdu.aliyuncs.com/app/app/1d718eb672a44247a6e530548dc0100f.svg");
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void resetCollectionToNull(List<BpmnTaskInstanceLogVO> tasks) {
|
||||
tasks.forEach(i -> {
|
||||
if (ListUtils.emptyIfNull(i.getForecastAssignees()).isEmpty()) {
|
||||
|
||||
@ -145,10 +145,10 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
.ifPresent(approverEmptyHandleTypeEnum -> {
|
||||
switch (approverEmptyHandleTypeEnum) {
|
||||
case autoPassed:
|
||||
autoPass(delegateTask, "", "未找到审批人,自动同意");
|
||||
autoPass(delegateTask, "", "未找到审批人,系统通过");
|
||||
break;
|
||||
case autoRejection:
|
||||
autoReject(delegateTask, "未找到审批人,自动驳回");
|
||||
autoReject(delegateTask, "未找到审批人,系统驳回");
|
||||
break;
|
||||
case autoSkipped:
|
||||
// autoReject(delegateTask);
|
||||
@ -199,7 +199,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
}
|
||||
|
||||
private void autoReject(DelegateTask delegateTask) {
|
||||
autoReject(delegateTask, "无需审批人,自动驳回");
|
||||
autoReject(delegateTask, "无需审批人,驳回");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -221,7 +221,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
* @param delegateTask 自动操作的任务
|
||||
*/
|
||||
private void autoPass(DelegateTask delegateTask) {
|
||||
autoPass(delegateTask, null, "无需审批人,自动同意");
|
||||
autoPass(delegateTask, null, "无需审批人,通过");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user