|
|
@@ -1,5 +1,6 @@
|
|
|
package com.izouma.nineth.service;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import com.izouma.nineth.domain.Order;
|
|
|
import com.izouma.nineth.domain.User;
|
|
|
import com.izouma.nineth.enums.AuthorityName;
|
|
|
@@ -71,10 +72,46 @@ public class StatisticService {
|
|
|
LocalDateTime start = date.minusDays(day);
|
|
|
List<Order> orders = orderRepo.findAllByPayTimeIsAfter(start);
|
|
|
Map<CollectionSource, List<Order>> orderMap = orders.stream().collect(Collectors.groupingBy(Order::getSource));
|
|
|
- orderMap.get(CollectionSource.OFFICIAL).stream().collect(Collectors.groupingBy(
|
|
|
- item -> new SimpleDateFormat("yyyy-MM-dd").format(item.getPayTime()), Collectors.counting()));
|
|
|
- orderMap.get(CollectionSource.TRANSFER).stream().collect(Collectors.groupingBy(
|
|
|
- item -> new SimpleDateFormat("yyyy-MM-dd").format(item.getPayTime()), Collectors.counting()));
|
|
|
- return null;
|
|
|
+ Map<String, Long> official = orderMap.get(CollectionSource.OFFICIAL).stream().collect(Collectors.groupingBy(
|
|
|
+ item -> DateTimeFormatter.ofPattern("yyyy-MM-dd").format(item.getPayTime()), Collectors.counting()));
|
|
|
+ Map<String, Long> transfer = null;
|
|
|
+ if (CollUtil.isNotEmpty(orderMap.get(CollectionSource.TRANSFER))) {
|
|
|
+ transfer = orderMap.get(CollectionSource.TRANSFER).stream().collect(Collectors.groupingBy(
|
|
|
+ item -> DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
+ .format(item.getPayTime()), Collectors.counting()));
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Map<String, Long>> trend = new HashMap<>();
|
|
|
+ trend.put("official", official);
|
|
|
+ trend.put("transfer", transfer);
|
|
|
+ return trend;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Map<String, BigDecimal>> orderPriceTrend(int day) {
|
|
|
+ LocalDateTime date = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
|
|
+ LocalDateTime start = date.minusDays(day);
|
|
|
+ List<Order> orders = orderRepo.findAllByPayTimeIsAfter(start);
|
|
|
+ Map<CollectionSource, List<Order>> orderMap = orders.stream().collect(Collectors.groupingBy(Order::getSource));
|
|
|
+ Map<String, BigDecimal> official = orderMap.get(CollectionSource.OFFICIAL)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ item -> DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
+ .format(item.getPayTime()), Collectors.mapping(Order::getTotalPrice,
|
|
|
+ Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
|
|
+
|
|
|
+ Map<String, BigDecimal> transfer = null;
|
|
|
+ if (CollUtil.isNotEmpty(orderMap.get(CollectionSource.TRANSFER))) {
|
|
|
+ transfer = orderMap.get(CollectionSource.TRANSFER)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ item -> DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
+ .format(item.getPayTime()), Collectors.mapping(Order::getTotalPrice,
|
|
|
+ Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Map<String, BigDecimal>> trend = new HashMap<>();
|
|
|
+ trend.put("official", official);
|
|
|
+ trend.put("transfer", transfer);
|
|
|
+ return trend;
|
|
|
}
|
|
|
}
|