feat(REQ-2924) - 完整测试单条分支路线各种节点的日志生成数据

This commit is contained in:
wangli 2024-09-09 18:10:07 +08:00
parent 27a640048a
commit f221b53c3d
8 changed files with 161 additions and 99 deletions

View File

@ -62,6 +62,7 @@ public class CustomServiceTaskDelegateExpressionActivityBehavior extends Service
task.setPropagatedStageInstanceId(execution.getPropagatedStageInstanceId()); task.setPropagatedStageInstanceId(execution.getPropagatedStageInstanceId());
task.setName(serviceTask.getName()); task.setName(serviceTask.getName());
TaskHelper.insertTask(task, (ExecutionEntity) execution, true, false); TaskHelper.insertTask(task, (ExecutionEntity) execution, true, false);
log.error("ServiceTask execute taskId: {}", task.getId());
// 添加 taskInst 扩展表数据 // 添加 taskInst 扩展表数据
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher(); FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
@ -81,6 +82,7 @@ public class CustomServiceTaskDelegateExpressionActivityBehavior extends Service
org.flowable.engine.TaskService taskService = processEngineConfiguration.getTaskService(); org.flowable.engine.TaskService taskService = processEngineConfiguration.getTaskService();
TaskEntity serviceTask = (TaskEntity) taskService.createTaskQuery().taskId(task.getId()) TaskEntity serviceTask = (TaskEntity) taskService.createTaskQuery().taskId(task.getId())
.taskDefinitionKey(execution.getCurrentActivityId()).singleResult(); .taskDefinitionKey(execution.getCurrentActivityId()).singleResult();
log.error("ServiceTask leave taskId: {}", serviceTask.getId());
if (Objects.nonNull(serviceTask)) { if (Objects.nonNull(serviceTask)) {
// 用于新版日志 // 用于新版日志
serviceTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + serviceTask.getId(), APPROVED.getStatus()); serviceTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + serviceTask.getId(), APPROVED.getStatus());

View File

@ -276,8 +276,7 @@ public class CustomTaskHelper {
comment.setFullMessage(message); comment.setFullMessage(message);
processEngineConfiguration.getCommentEntityManager().insert(comment); processEngineConfiguration.getCommentEntityManager().insert(comment);
task.setTransientVariableLocal(type, message);
task.setTransientVariable(type, message);
} }
public static Attachment addAttachment(CommandContext commandContext, Task task, AttachmentDTO attachmentDto) { public static Attachment addAttachment(CommandContext commandContext, Task task, AttachmentDTO attachmentDto) {
@ -389,7 +388,6 @@ public class CustomTaskHelper {
if (StringUtils.hasLength(comment)) { if (StringUtils.hasLength(comment)) {
Authentication.setAuthenticatedUserId(userId); Authentication.setAuthenticatedUserId(userId);
addComment(commandContext, task, COMMENT_TYPE_ADVICE, comment); addComment(commandContext, task, COMMENT_TYPE_ADVICE, comment);
task.setTransientVariable(COMMENT_TYPE_ADVICE + task.getId(), comment);
Authentication.setAuthenticatedUserId(null); Authentication.setAuthenticatedUserId(null);
} }
} }

View File

@ -108,12 +108,12 @@ public class TaskEntityEventHandle implements EntityEventHandle<TaskEntity> {
update.setStatus(APPROVED.getStatus()); update.setStatus(APPROVED.getStatus());
} else { } else {
Object advice = taskEntity.getTransientVariable(COMMENT_TYPE_ADVICE); Object advice = taskEntity.getTransientVariableLocal(COMMENT_TYPE_ADVICE);
if (Objects.nonNull(advice) && StringUtils.hasText(advice.toString())) { if (Objects.nonNull(advice) && StringUtils.hasText(advice.toString())) {
log.info("COMMENT_TYPE_ADVICE: {}", advice); log.info("COMMENT_TYPE_ADVICE: {}", advice);
update.setAdvice(advice.toString()); update.setAdvice(advice.toString());
} }
Object operationDesc = taskEntity.getTransientVariable(COMMENT_TYPE_OPERATION_DESC); Object operationDesc = taskEntity.getTransientVariableLocal(COMMENT_TYPE_OPERATION_DESC);
if (Objects.nonNull(operationDesc) && StringUtils.hasText(operationDesc.toString())) { if (Objects.nonNull(operationDesc) && StringUtils.hasText(operationDesc.toString())) {
log.info("COMMENT_TYPE_OPERATION_DESC: {}", operationDesc); log.info("COMMENT_TYPE_OPERATION_DESC: {}", operationDesc);
update.setOperationDesc(Objects.nonNull(assignee) ? assignee.getAssignerName() + operationDesc : operationDesc.toString()); update.setOperationDesc(Objects.nonNull(assignee) ? assignee.getAssignerName() + operationDesc : operationDesc.toString());

View File

@ -1061,7 +1061,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
.orElse(variables.getOrDefault(OLD_INTERNAL_INITIATOR, null)))) .orElse(variables.getOrDefault(OLD_INTERNAL_INITIATOR, null))))
.tenantId(historicProcessInstance.getTenantId()) .tenantId(historicProcessInstance.getTenantId())
.agented((Boolean) Optional.ofNullable(variables.get(INTERNAL_PROCESS_AGENT)).orElse(false)) .agented((Boolean) Optional.ofNullable(variables.get(INTERNAL_PROCESS_AGENT)).orElse(false))
.taskDetails(genericTaskLogVos(historicProcessInstance.getId(), logs, forecasting, dto.getEncrypt())) .taskDetails(genericTaskLogVos(historicProcessInstance.getId(), logs, forecasting, dto))
.defaultButtonConf(getButtonConfig(bpmnModel.getMainProcess()).orElse(new BpmnButtonConf())) .defaultButtonConf(getButtonConfig(bpmnModel.getMainProcess()).orElse(new BpmnButtonConf()))
.supportBatchOperation(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getSupportBatchOperation()) .supportBatchOperation(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getSupportBatchOperation())
.userAgreeSignature(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getUserAgreeSignature()) .userAgreeSignature(getProcessApproveConf(bpmnModel.getMainProcess()).orElse(new BpmnApproveConf()).getUserAgreeSignature())
@ -1199,17 +1199,17 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
private List<BpmnTaskInstanceLogVO> genericTaskLogVos(String processInstanceId, private List<BpmnTaskInstanceLogVO> genericTaskLogVos(String processInstanceId,
List<ExtAxProcessLog> logs, List<ExtAxProcessLog> logs,
List<ProcessNodeDetailVO> forecasting, List<ProcessNodeDetailVO> forecasting,
Boolean encrypt) { BpmnProcessInstanceLogQueryDTO dto) {
List<BpmnTaskInstanceLogVO> tasks = new ArrayList<>(); List<BpmnTaskInstanceLogVO> tasks = new ArrayList<>();
Map<String, List<Attachment>> attachmentByTaskMap = Map<String, List<Attachment>> attachmentByTaskMap =
taskService.getProcessInstanceAttachments(processInstanceId).stream() taskService.getProcessInstanceAttachments(processInstanceId).stream()
.collect(Collectors.groupingBy(Attachment::getTaskId)); .collect(Collectors.groupingBy(Attachment::getTaskId));
// 已完成的和进行中的 // 已完成的和进行中的
getHistoricTasks(logs, tasks, attachmentByTaskMap); getHistoricTasks(logs, tasks, attachmentByTaskMap, dto.getVisitor());
// 未来节点 // 未来节点
getFutureTasks(forecasting, tasks); getFutureTasks(forecasting, tasks);
// 处理是否加密 // 处理是否加密
handleEncrypt(encrypt, tasks); handleEncrypt(dto.getEncrypt(), tasks);
return tasks; return tasks;
} }
@ -1249,7 +1249,10 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
}); });
} }
private void getHistoricTasks(List<ExtAxProcessLog> logs, List<BpmnTaskInstanceLogVO> tasks, Map<String, List<Attachment>> attachmentByTaskMap) { private void getHistoricTasks(List<ExtAxProcessLog> logs,
List<BpmnTaskInstanceLogVO> tasks,
Map<String, List<Attachment>> attachmentByTaskMap,
BpmnTaskDelegateAssigner visitor) {
ListUtils.emptyIfNull(logs).forEach(e -> { ListUtils.emptyIfNull(logs).forEach(e -> {
Optional<BpmnTaskInstanceLogVO> processingTask = tasks.stream().filter(i -> Objects.equals(PROCESSING, i.getResult())) Optional<BpmnTaskInstanceLogVO> processingTask = tasks.stream().filter(i -> Objects.equals(PROCESSING, i.getResult()))
.filter(i -> Objects.equals(i.getTaskDefinitionKey(), e.getActivityId())).findAny(); .filter(i -> Objects.equals(i.getTaskDefinitionKey(), e.getActivityId())).findAny();
@ -1258,7 +1261,9 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
// 多实例的情况需要合并节点 // 多实例的情况需要合并节点
processingTask.ifPresent(i -> { processingTask.ifPresent(i -> {
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>(ListUtils.emptyIfNull(i.getForecastAssignees())); List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>(ListUtils.emptyIfNull(i.getForecastAssignees()));
if(CollectionUtils.isEmpty(assigners)) {
assigners.add(i.getAssigneeSnapshot()); assigners.add(i.getAssigneeSnapshot());
}
assigners.add(BpmnTaskDelegateAssigner.toObjectCompatible(CollectionUtils.isEmpty(ListUtils.emptyIfNull(e.getAssigneeFull())) ? null : e.getAssigneeFull().get(0))); assigners.add(BpmnTaskDelegateAssigner.toObjectCompatible(CollectionUtils.isEmpty(ListUtils.emptyIfNull(e.getAssigneeFull())) ? null : e.getAssigneeFull().get(0)));
switch (i.getNodeMode()) { switch (i.getNodeMode()) {
case AND: case AND:
@ -1273,6 +1278,9 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
} }
i.setAssigneeSnapshot(null); i.setAssigneeSnapshot(null);
i.setForecastAssignees(assigners); i.setForecastAssignees(assigners);
// 根据当前登录人重设聚合后的节点 taskId
assigners.stream().filter(user-> Objects.equals(user.getPersonId(), visitor.getPersonId())).findFirst()
.ifPresent(user-> i.setTaskId(e.getTaskId()));
}); });
} else { } else {
tasks.add(BpmnTaskInstanceLogVO.builder() tasks.add(BpmnTaskInstanceLogVO.builder()

View File

@ -0,0 +1,62 @@
package cn.axzo.workflow.server.controller.web;
import cn.axzo.karma.client.feign.FlowSupportApi;
import cn.axzo.karma.client.model.request.PersonProfileQueryReq;
import cn.axzo.karma.client.model.response.PersonProfileResp;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.server.common.util.RpcExternalUtil;
import com.google.common.collect.Lists;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 公共的获取 BpmnTask
*
* @author wangli
* @since 2024-09-09 16:51
*/
public abstract class BasicPopulateAvatarController {
@Resource
protected FlowSupportApi flowSupportApi;
/**
* 为一个人填充头像
*
* @param assigner
*/
protected final void populateUsersAvatar(BpmnTaskDelegateAssigner assigner) {
if (Objects.isNull(assigner)) {
return;
}
populateUsersAvatar(Lists.newArrayList(assigner));
}
/**
* 为一个集合的人填充头像
*
* @param assigners
*/
protected final void populateUsersAvatar(List<BpmnTaskDelegateAssigner> assigners) {
List<Long> personIds = assigners.stream().filter(e -> !StringUtils.hasText(e.getAvatar()) && StringUtils.hasText(e.getPersonId()))
.map(BpmnTaskDelegateAssigner::getPersonId)
.map(Long::parseLong)
.distinct().collect(Collectors.toList());
Map<Long, String> personMap = RpcExternalUtil.rpcApiResultProcessor(() -> flowSupportApi.listPersons(PersonProfileQueryReq.builder().personIds(personIds).build()),
"查询档案信息", "cn.axzo.karma.client.feign.FlowSupportApi.listPersons", personIds).stream()
.collect(Collectors.toMap(PersonProfileResp::getId, PersonProfileResp::getAvatarUrl));
assigners.forEach(e -> {
long personId = Long.parseLong(Optional.ofNullable(e.getPersonId()).orElse("-1"));
if (personMap.containsKey(personId)) {
e.setAvatar(personMap.getOrDefault(personId, ""));
}
});
}
}

View File

@ -1,5 +1,8 @@
package cn.axzo.workflow.server.controller.web.bpmn; package cn.axzo.workflow.server.controller.web.bpmn;
import cn.axzo.karma.client.feign.FlowSupportApi;
import cn.axzo.karma.client.model.request.PersonProfileQueryReq;
import cn.axzo.karma.client.model.response.PersonProfileResp;
import cn.axzo.workflow.client.feign.bpmn.ProcessActivityApi; import cn.axzo.workflow.client.feign.bpmn.ProcessActivityApi;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;
@ -8,10 +11,13 @@ import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
import cn.axzo.workflow.core.service.BpmnProcessActivityService; import cn.axzo.workflow.core.service.BpmnProcessActivityService;
import cn.axzo.workflow.server.common.annotation.ErrorReporter; import cn.axzo.workflow.server.common.annotation.ErrorReporter;
import cn.axzo.workflow.server.common.annotation.RepeatSubmit; import cn.axzo.workflow.server.common.annotation.RepeatSubmit;
import cn.axzo.workflow.server.common.util.RpcExternalUtil;
import cn.axzo.workflow.server.controller.web.BasicPopulateAvatarController;
import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.CommonResponse;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -24,6 +30,9 @@ import javax.annotation.Resource;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_BIZ_SET_ASSIGNEE_HAS_REPEAT; import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_BIZ_SET_ASSIGNEE_HAS_REPEAT;
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.removeDuplicateByPersonId; import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.removeDuplicateByPersonId;
@ -40,10 +49,12 @@ import static cn.azxo.framework.common.model.CommonResponse.success;
@RestController @RestController
@ErrorReporter @ErrorReporter
@Validated @Validated
public class BpmnProcessActivityController implements ProcessActivityApi { public class BpmnProcessActivityController extends BasicPopulateAvatarController implements ProcessActivityApi {
@Resource @Resource
private BpmnProcessActivityService bpmnProcessActivityService; private BpmnProcessActivityService bpmnProcessActivityService;
@Resource
private FlowSupportApi flowSupportApi;
/** /**
* 业务节点唤醒 旧版本使用的接口 * 业务节点唤醒 旧版本使用的接口
@ -101,6 +112,10 @@ public class BpmnProcessActivityController implements ProcessActivityApi {
} else { } else {
dto.setAssigners(removeDuplicateByPersonId(dto.getAssigners())); dto.setAssigners(removeDuplicateByPersonId(dto.getAssigners()));
} }
//填充头像
populateUsersAvatar(dto.getAssigners());
bpmnProcessActivityService.setAssignee(dto); bpmnProcessActivityService.setAssignee(dto);
return success(true); return success(true);
} }

View File

@ -31,6 +31,7 @@ import cn.axzo.workflow.core.service.BpmnProcessInstanceService;
import cn.axzo.workflow.server.common.annotation.ErrorReporter; import cn.axzo.workflow.server.common.annotation.ErrorReporter;
import cn.axzo.workflow.server.common.annotation.RepeatSubmit; import cn.axzo.workflow.server.common.annotation.RepeatSubmit;
import cn.axzo.workflow.server.common.util.RpcExternalUtil; import cn.axzo.workflow.server.common.util.RpcExternalUtil;
import cn.axzo.workflow.server.controller.web.BasicPopulateAvatarController;
import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.CommonResponse;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
@ -70,7 +71,7 @@ import static cn.azxo.framework.common.model.CommonResponse.success;
@RestController @RestController
@ErrorReporter @ErrorReporter
@Validated @Validated
public class BpmnProcessInstanceController implements ProcessInstanceApi { public class BpmnProcessInstanceController extends BasicPopulateAvatarController implements ProcessInstanceApi {
@Resource @Resource
private BpmnProcessInstanceService bpmnProcessInstanceService; private BpmnProcessInstanceService bpmnProcessInstanceService;
@ -113,13 +114,8 @@ public class BpmnProcessInstanceController implements ProcessInstanceApi {
@RepeatSubmit @RepeatSubmit
public CommonResponse<String> createProcessInstance(@Validated @RequestBody BpmnProcessInstanceCreateDTO dto) { public CommonResponse<String> createProcessInstance(@Validated @RequestBody BpmnProcessInstanceCreateDTO dto) {
log.info("发起审核createProcessInstance===>>>参数:{}", JSONUtil.toJsonStr(dto)); log.info("发起审核createProcessInstance===>>>参数:{}", JSONUtil.toJsonStr(dto));
long personId = Long.parseLong(Optional.ofNullable(dto.getInitiator().getPersonId()).orElse("-1")); // 填充头像
Map<Long, String> personMap = RpcExternalUtil.rpcApiResultProcessor(() -> flowSupportApi.listPersons(PersonProfileQueryReq.builder().personId(personId).build()), populateUsersAvatar(dto.getInitiator());
"查询档案信息", "cn.axzo.karma.client.feign.FlowSupportApi.listPersons", personId).stream()
.collect(Collectors.toMap(PersonProfileResp::getId, PersonProfileResp::getAvatarUrl));
if (personMap.containsKey(personId)) {
dto.getInitiator().setAvatar(personMap.getOrDefault(personId, ""));
}
return success(bpmnProcessInstanceService.createProcessInstance(dto)); return success(bpmnProcessInstanceService.createProcessInstance(dto));
} }

View File

@ -29,6 +29,7 @@ import cn.axzo.workflow.core.service.BpmnProcessTaskService;
import cn.axzo.workflow.server.common.annotation.ErrorReporter; import cn.axzo.workflow.server.common.annotation.ErrorReporter;
import cn.axzo.workflow.server.common.annotation.RepeatSubmit; import cn.axzo.workflow.server.common.annotation.RepeatSubmit;
import cn.axzo.workflow.server.common.util.RpcExternalUtil; import cn.axzo.workflow.server.common.util.RpcExternalUtil;
import cn.axzo.workflow.server.controller.web.BasicPopulateAvatarController;
import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.CommonResponse;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -64,7 +65,7 @@ import static cn.azxo.framework.common.model.CommonResponse.success;
@RestController @RestController
@ErrorReporter @ErrorReporter
@Validated @Validated
public class BpmnProcessTaskController implements ProcessTaskApi { public class BpmnProcessTaskController extends BasicPopulateAvatarController implements ProcessTaskApi {
@Resource @Resource
private BpmnProcessTaskService bpmnProcessTaskService; private BpmnProcessTaskService bpmnProcessTaskService;
@ -189,15 +190,8 @@ public class BpmnProcessTaskController implements ProcessTaskApi {
@RepeatSubmit @RepeatSubmit
public CommonResponse<Boolean> transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto) { public CommonResponse<Boolean> transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto) {
log.info("转交任务 transferTask===>>>参数:{}", JSON.toJSONString(dto)); log.info("转交任务 transferTask===>>>参数:{}", JSON.toJSONString(dto));
// 填充头像
long personId = Long.parseLong(Optional.ofNullable(dto.getTargetAssigner().getPersonId()).orElse("-1")); populateUsersAvatar(dto.getTargetAssigner());
Map<Long, String> personMap = RpcExternalUtil.rpcApiResultProcessor(() -> flowSupportApi.listPersons(PersonProfileQueryReq.builder().personId(personId).build()),
"查询档案信息", "cn.axzo.karma.client.feign.FlowSupportApi.listPersons", personId).stream()
.collect(Collectors.toMap(PersonProfileResp::getId, PersonProfileResp::getAvatarUrl));
if (personMap.containsKey(personId)) {
dto.getTargetAssigner().setAvatar(personMap.getOrDefault(personId, ""));
}
bpmnProcessTaskService.transferTask(dto); bpmnProcessTaskService.transferTask(dto);
return success(true); return success(true);
} }
@ -234,21 +228,8 @@ public class BpmnProcessTaskController implements ProcessTaskApi {
@RepeatSubmit @RepeatSubmit
public CommonResponse<Boolean> countersignTask(@Validated @RequestBody BpmnTaskCountersignDTO countersignDTO) { public CommonResponse<Boolean> countersignTask(@Validated @RequestBody BpmnTaskCountersignDTO countersignDTO) {
log.info("加签任务 countersignTask===>>>参数:{}", JSON.toJSONString(countersignDTO)); log.info("加签任务 countersignTask===>>>参数:{}", JSON.toJSONString(countersignDTO));
// 填充头像
List<Long> personIds = countersignDTO.getTargetAssignerList().stream().filter(e -> !StringUtils.hasText(e.getAvatar()) && StringUtils.hasText(e.getPersonId())) populateUsersAvatar(countersignDTO.getTargetAssignerList());
.map(BpmnTaskDelegateAssigner::getPersonId)
.map(Long::parseLong)
.distinct().collect(Collectors.toList());
Map<Long, String> personMap = RpcExternalUtil.rpcApiResultProcessor(() -> flowSupportApi.listPersons(PersonProfileQueryReq.builder().personIds(personIds).build()),
"查询档案信息", "cn.axzo.karma.client.feign.FlowSupportApi.listPersons", personIds).stream()
.collect(Collectors.toMap(PersonProfileResp::getId, PersonProfileResp::getAvatarUrl));
countersignDTO.getTargetAssignerList().forEach(e -> {
long personId = Long.parseLong(Optional.ofNullable(e.getPersonId()).orElse("-1"));
if (personMap.containsKey(personId)) {
e.setAvatar(personMap.getOrDefault(personId, ""));
}
});
bpmnProcessTaskService.countersignTask(countersignDTO); bpmnProcessTaskService.countersignTask(countersignDTO);
return success(true); return success(true);
} }