| | |
| | | lastDay = date.with(TemporalAdjusters.lastDayOfYear()); |
| | | } |
| | | LocalDate finalLastDay = lastDay; |
| | | salesDeliveries = salesDeliveries |
| | | List<SalesDelivery> salesDeliverie = salesDeliveries |
| | | .stream() |
| | | .filter(delivery -> { |
| | | LocalDate deliveryDate = delivery.getDeliveryDate(); |
| | |
| | | AddressRegionEnum::getRegionName, // 区域名作为key |
| | | enumItem -> 0L // 初始值全部为0 |
| | | )); |
| | | if (!CollectionUtils.isEmpty(salesDeliveries)) { |
| | | if (!CollectionUtils.isEmpty(salesDeliverie)) { |
| | | // 按区域分组,统计每个区域的销量总和 |
| | | regionCountMap = salesDeliveries.stream() |
| | | regionCountMap = salesDeliverie.stream() |
| | | .filter(delivery -> delivery.getDeliveryPlace() != null) |
| | | .collect(Collectors.groupingBy( |
| | | delivery -> { |
| | |
| | | Collectors.summingLong(delivery -> delivery.getVolume() != null ? delivery.getVolume().longValue() : 0L) |
| | | )); |
| | | } |
| | | regionCountMap.put("全部", salesDeliveries.stream() |
| | | regionCountMap.put("全部", salesDeliverie.stream() |
| | | .mapToLong(item -> item.getVolume() != null ? item.getVolume().longValue() : 0L) |
| | | .sum()); |
| | | maps.add(regionCountMap); |
| | |
| | | salesTotalDto.setDates(dates); |
| | | salesTotalDto.setCustomerTrends(maps); |
| | | return salesTotalDto; |
| | | } |
| | | |
| | | @Override |
| | | public List<SalesTotalDetailDto> salesRanking(SalesDeliveryDto salesDeliveryDto) { |
| | | List<SalesTotalDetailDto> salesTotalDetailDtos = new ArrayList<>(); |
| | | List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays()); |
| | | List<SalesDelivery> salesDeliveries = salesDeliveryMapper.selectList(Wrappers.<SalesDelivery>lambdaQuery() |
| | | .eq(SalesDelivery::getProductName, salesDeliveryDto.getType())); |
| | | for (LocalDate date : dates) { |
| | | LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); |
| | | LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); |
| | | if (salesDeliveryDto.getDays().equals("年")) { |
| | | lastDay = date.with(TemporalAdjusters.lastDayOfYear()); |
| | | } |
| | | LocalDate finalLastDay = lastDay; |
| | | salesDeliveries = salesDeliveries |
| | | .stream() |
| | | .filter(delivery -> { |
| | | LocalDate deliveryDate = delivery.getDeliveryDate(); |
| | | return !deliveryDate.isBefore(firstDay) && !deliveryDate.isAfter(finalLastDay); |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | Map<String, Long> regionCountMap = Arrays.stream(AddressRegionEnum.values()) |
| | | .collect(Collectors.toMap( |
| | | AddressRegionEnum::getRegionName, // 区域名作为key |
| | | enumItem -> 0L // 初始值全部为0 |
| | | )); |
| | | if (!CollectionUtils.isEmpty(salesDeliveries)) { |
| | | // 按区域分组,统计每个区域的销量总和 |
| | | regionCountMap = salesDeliveries.stream() |
| | | .filter(delivery -> delivery.getDeliveryPlace() != null) |
| | | .collect(Collectors.groupingBy( |
| | | delivery -> { |
| | | AddressRegionEnum regionEnum = AddressRegionEnum.matchRegion(delivery.getDeliveryPlace()); |
| | | return regionEnum != null ? regionEnum.getRegionName() : null; |
| | | }, |
| | | Collectors.summingLong(delivery -> delivery.getVolume() != null ? delivery.getVolume().longValue() : 0L) |
| | | )); |
| | | } |
| | | regionCountMap.put("全部", salesDeliveries.stream() |
| | | .mapToLong(item -> item.getVolume() != null ? item.getVolume().longValue() : 0L) |
| | | .sum()); |
| | | SalesTotalDetailDto salesTotalDetailDto = new SalesTotalDetailDto(); |
| | | salesTotalDetailDto.setDate(date); |
| | | salesTotalDetailDto.setType(salesDeliveryDto.getType()); |
| | | salesTotalDetailDtos.add(salesTotalDetailDto); |
| | | } |
| | | return salesTotalDetailDtos; |
| | | } |
| | | |
| | | @Override |
| | |
| | | lastDay = date.with(TemporalAdjusters.lastDayOfYear()); |
| | | } |
| | | LocalDate finalLastDay = lastDay; |
| | | salesDeliveries = salesDeliveries |
| | | List<SalesDelivery> salesDeliverie = salesDeliveries |
| | | .stream() |
| | | .filter(delivery -> { |
| | | LocalDate deliveryDate = delivery.getDeliveryDate(); |
| | |
| | | AddressRegionEnum::getRegionName, // 区域名作为key |
| | | enumItem -> 0L // 初始值全部为0 |
| | | )); |
| | | if (!CollectionUtils.isEmpty(salesDeliveries)) { |
| | | if (!CollectionUtils.isEmpty(salesDeliverie)) { |
| | | // 按区域分组,统计每个区域的销量总和 |
| | | regionCountMap = salesDeliveries.stream() |
| | | regionCountMap = salesDeliverie.stream() |
| | | .filter(delivery -> delivery.getDeliveryPlace() != null) |
| | | .collect(Collectors.groupingBy( |
| | | delivery -> { |
| | |
| | | Collectors.summingLong(delivery -> delivery.getPrice() != null ? delivery.getPrice().longValue() : 0L) |
| | | )); |
| | | } |
| | | regionCountMap.put("全部", salesDeliveries.stream() |
| | | regionCountMap.put("全部", salesDeliverie.stream() |
| | | .mapToLong(item -> item.getPrice() != null ? item.getPrice().longValue() : 0L) |
| | | .sum()); |
| | | maps.add(regionCountMap); |
| | |
| | | salesTotalDto.setDates(dates); |
| | | salesTotalDto.setCustomerTrends(maps); |
| | | return salesTotalDto; |
| | | } |
| | | |
| | | @Override |
| | | public List<SalesTotalDetailDto> salesDataRanking(SalesDeliveryDto salesDeliveryDto) { |
| | | List<SalesTotalDetailDto> salesTotalDetailDtos = new ArrayList<>(); |
| | | List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays()); |
| | | |
| | | return salesTotalDetailDtos; |
| | | } |
| | | |
| | | @Override |