diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 4dc5eaf92..f2f939a33 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -1140,7 +1140,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic // 比对抄送人 logVO.getTaskDetails().stream() .filter(i -> Objects.equals(i.getNodeType(), NODE_CARBON_COPY)) - .flatMap(i -> i.getForecastAssignees().stream()) + .flatMap(i -> ListUtils.emptyIfNull(i.getForecastAssignees()).stream()) .filter(i -> i.buildAssigneeId().contains(ge130Assignee) || Objects.equals(i.buildAssigneeId_1_2_1(), le130Assignee)) .findAny() .ifPresent(i -> authorizedButtons.addAll(chooseButtons(logVO, CONFIG_BUTTON_TYPE_CARBON_COPY))); @@ -1210,9 +1210,19 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic getFutureTasks(forecasting, tasks); // 处理是否加密 handleEncrypt(dto.getEncrypt(), tasks); + // reset field forecastAssignees Empty to null; + resetCollectionToNull(tasks); return tasks; } + private void resetCollectionToNull(List tasks) { + tasks.forEach(i-> { + if(ListUtils.emptyIfNull(i.getForecastAssignees()).isEmpty()) { + i.setForecastAssignees(null); + } + }); + } + private static void handleEncrypt(Boolean encrypt, List tasks) { if (Boolean.FALSE.equals(encrypt)) { return; @@ -1230,7 +1240,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic i.setOperationDesc("已处理"); } // 统一将多人节点数据全部置空 - i.setForecastAssignees(Collections.emptyList()); + i.setForecastAssignees(null); // 统一将签名数据置空 i.setSignatureUrl(null); });