使用流量数据将流量减少为单声道

瓦伦沙玛

我有这种情况。我有一个分页的API,可以提供过去12个月的数据。API的响应类似于:

public class PagedTransfersDto {

  private List<Transfer> content;

  private Page page;

  @Getter
  public static class Transfer {
      private String id;
      private Long transferId;
      private Long transferRequestId;
      private String status;
      private BigDecimal accountReceivable;
      private BigDecimal accountPayable;
      private BigDecimal netReceivable;
      private BigDecimal netPayable;
      private String currency;
      private Long transferDate;
  }

  @Getter
  public static class Page {
      private Integer size;
      private Integer number;
      private Integer totalElements;
      private Integer totalPages;
  }
}

现在,我必须收集所有数据,然后计算所有的总和,然后以形式netReceivable返回Mono<CompanyIncome>这个pojo就像

public class CompanyIncome {
  private BigDecimal inferredIncome = new BigDecimal(0);
}

为此,我写了类似以下内容:

CompanyIncome initialIncome = new CompanyIncome();
    return myService.getTransfers(0, 50, fromDate, toDate)
        .expand(pagedTransfersDto -> {
            if (pagedTransfersDto.getPage().getNumber().equals(pagedTransfersDto.getPage().getTotalPages())) {
                return Mono.empty();
            }
            return myService.getTransfers(pagedTransfersDto.getPage().getNumber() + 1, 50, fromDate, toDate);
        })
        .flatMap(pagedTransfersDto -> Flux.fromIterable(pagedTransfersDto.getContent()))
        .reduce(initialIncome, ((companyIncome, transfer) -> {
            companyIncome.setInferredIncome(companyIncome.getInferredIncome().add(transfer.getNetReceivable()));
            return companyIncome;
        }));

现在要注意的是,该数据可能只保留了3个月,在这种情况下,我必须将其乘以4推断出12个月。

我在想什么是获取转移清单的第一项和最后一项,并查看数据是否不是整年的,但无法想到执行此操作的地方。

由于减少传输之后,数据消失了。在此之前,我似乎无法找到一种方法来获取此信息并仍然减少转移流量

我对被动方式有点陌生,似乎无法找到一种方式来做到这一点。任何帮助将不胜感激。谢谢

西蒙·巴斯勒(Simon Basle)

为此,最佳解决方案是将必要的“元数据”存储在精简对象中。您已经有一个CompanyIncome对象,所以也许这是一个好地方?否则,我将介绍一个Tuple2或一些中间业务对象(例如CompanyIncomeAggregator),在其中存储汇总收入和最终需要确定的信息(如果需要进一步处理)。

然后在一个map步骤中,您将读取该信息,对其进行操作,然后按原样返回计算出的收入,或者根据您的标准对其进行修改。

重要说明:在反应链外部使用变量是一种代码味道,因为它引入了泄漏的共享状态:如果对同一个Mono进行了两个预订,则它们将在同一个CompanyIncome对象上工作您可以通过使用进行补救reduceWith,该方法使用Supplier初始值:reduceWith(CompanyIncome::new, ...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过将 json 数据移动到 url 来减少流量

来自分类Dev

将单声道音频数据传递到AVAudioEnvironmentNode

来自分类Dev

使用登录数据指导用户流量

来自分类Dev

使用netcat将流量记录到文件

来自分类Dev

为 VPN 配置流量

来自分类Dev

是否可以根据使用时长或数据流量为特定网站创建每日配额?

来自分类Dev

单声道系统服务将无法启动

来自分类Dev

Konsole和其他应用程序将FontBureau的“输入单声道”渲染为比例

来自分类Dev

如何将 xamarin 表单项目设置为单声道 android

来自分类Dev

单声道如何使用BSD套接字?

来自分类Dev

使用单声道等待UIO中断

来自分类Dev

尝试使用sox或ffmpeg将2声道声音文件转换为单声道时出错

来自分类Dev

ffmpeg如何使用音频声像滤镜将立体声转换为单声道

来自分类Dev

使用Lame将mp3从单声道转换为立体声

来自分类Dev

如何使用单声道将 .so 文件链接到托管 DLL

来自分类Dev

使用iptables使流量单向

来自分类Dev

webrtc配置以减少发送的流量

来自分类Dev

使用Cacti进行数据中心流量报告

来自分类Dev

使用iptables将流量转发到服务器

来自分类Dev

textEntry.Text输出为Gtk.Entry(单声道)

来自分类Dev

textEntry.Text输出为Gtk.Entry(单声道)

来自分类常见问题

从行程数据汇总中枢流量

来自分类Dev

如何获取原始流量数据

来自分类Dev

从行程数据汇总中枢流量

来自分类Dev

从C#(单声道)到C ++的元数据数组

来自分类Dev

无法安装单声道

来自分类Dev

如何检测单声道?

来自分类Dev

单声道魔术如何?

来自分类Dev

单声道和抽象