优化这段代码 Mono<List<CheckInfoWithDeviceEntity>> listMono = service.query(query).flatMap( deviceCheckInfoEntity -> Mono.zip(Mono.just(deviceCheckInfoEntity), instanceService.findById(deviceCheckInfoEntity.getDeviceId()))).map( item -> new CheckInfoWithDeviceEntity(item.getT1(), item.getT2())).sort(Comparator.comparing(CheckInfoWithDeviceEntity::getSort).reversed()).collectList(); return Mono.zip(listMono,count(query),(data , total) -> PagerResult.of(total,data,query));
时间: 2024-01-30 11:02:19 浏览: 119
可以将代码拆分成多个步骤,以提高代码的可读性和可维护性。例如,可以将 `query` 的查询结果和设备信息合并成 `CheckInfoWithDeviceEntity` 对象列表的步骤单独提出来,再进行排序和统计总数的操作。
重构后的代码如下所示:
```
Mono<List<CheckInfoWithDeviceEntity>> listMono = service.query(query)
.flatMap(deviceCheckInfoEntity ->
Mono.zip(
Mono.just(deviceCheckInfoEntity),
instanceService.findById(deviceCheckInfoEntity.getDeviceId())
)
)
.map(item -> new CheckInfoWithDeviceEntity(item.getT1(), item.getT2()))
.collectList();
Mono<Long> countMono = count(query);
return Mono.zip(listMono, countMono, (data, total) ->
PagerResult.of(total, data, query))
.flatMap(result -> Mono.just(result.sorted(Comparator.comparing(CheckInfoWithDeviceEntity::getSort).reversed())));
```
这样代码更易于理解,每个步骤都有一个明确的目的和功能。同时,我们还将 `sort` 操作放在了 `flatMap` 之后,以确保数据完整性。
阅读全文