@Override
public List<OrderChargeDetailDTO> selectSumAmount(QueryOrderDTO dto) {
if (CollectionUtil.isEmpty(dto.getOrderIdList())){
List<OrderChargeDetailDTO> orderChargeDetailDTOS = this.baseMapper.selectSumAmount(dto);
log.info("=====selectSumAmount{}======",orderChargeDetailDTOS);
return orderChargeDetailDTOS;
}else {
List<Long> orderIdList = dto.getOrderIdList();
log.info("=========orderIdList{}========", orderIdList.size());
if (orderIdList.size() <= 20000) {
List<OrderChargeDetailDTO> result = this.baseMapper.selectSumAmount(dto, orderIdList);
return result;
}
List<Future> futureList = new ArrayList(8);
List<Long> orderIds;
for (int i = 0; i <= orderIdList.size() / 20000; i++) {
if (i != orderIdList.size() / 20000) {
orderIds = orderIdList.subList(i * 20000, (i + 1) * 20000);
} else {
orderIds = orderIdList.subList(i * 20000, orderIdList.size());
}
List<Long> finalOrderIds = orderIds;
Callable cal = () -> {
log.info("========submit{}=======", finalOrderIds.size());
return this.baseMapper.selectSumAmount(dto, finalOrderIds);
};
Future<QueryOrderStaticDTO> submit = queryExecutor.submit(cal);
futureList.add(submit);
}
List<OrderChargeDetailDTO> result = new ArrayList<>(orderIdList.size());
try {
for (Future<List<OrderChargeDetailDTO>> message : futureList) {
List<OrderChargeDetailDTO> detailDTOS = message.get();
result.addAll(detailDTOS);
log.info("======dto{}======", detailDTOS);
}
} catch (Exception e) {
log.error("[]order-domain[]OrderInfoServiceImpl[]selectSumAmount[] query error", e);
throw new BizException("统计异常");
}
return result;
}
}
Callable实战
最新推荐文章于 2024-11-01 14:48:20 发布