From b572e82dcafea0fd893d908c7bb0e048483a1dd3 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 01 四月 2026 13:38:54 +0800
Subject: [PATCH] fix: 生产计划下发时产品类型ID未保存
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 160 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 146 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index e59bd8d..b6cc70e 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -2523,19 +2523,21 @@
@Override
public Map<String, Long> total() {
Map<String, Long> map = new HashMap<>();
- //鎬婚攢鍞噾棰�
List<SalesDelivery> salesDeliveries = salesDeliveryMapper.selectList(null);
+ //鎬婚攢鍞噾棰�
BigDecimal sum = salesDeliveries.stream()
.map(item -> item.getPrice() != null ? new BigDecimal(item.getPrice().toString()) : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add);
long finalPrice = sum.divide(new BigDecimal("1000"), 0, RoundingMode.HALF_UP).longValue();
-
map.put("price", finalPrice);//鍗曚綅w
//鎬诲彂璐у崟
map.put("delivery", (long) salesDeliveries.size());
//鎬婚攢鍞柟鏁�
- long volume = salesDeliveries.stream().mapToLong(value -> Long.parseLong(value.getVolume().toString())).sum();
- map.put("volume",volume);
+ BigDecimal volume = salesDeliveries.stream()
+ .map(item -> item.getVolume() != null ? new BigDecimal(item.getVolume().toString()) : BigDecimal.ZERO)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ long finalVolume = volume.divide(new BigDecimal("1000"), 0, RoundingMode.HALF_UP).longValue();
+ map.put("volume",finalVolume);
//绱瀹㈡埛
Long count = customerMapper.selectCount(null);
map.put("customer",count);
@@ -2543,27 +2545,155 @@
}
@Override
- public String salesAnalysis(SalesDeliveryDto salesDeliveryDto) {
+ public SalesTotalDto salesAnalysis(SalesDeliveryDto salesDeliveryDto) {
+ SalesTotalDto salesTotalDto = new SalesTotalDto();
List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays());
- return null;
+ List<Map<String, Long>> maps = new ArrayList<>();
+ 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, // 鍖哄煙鍚嶄綔涓簁ey
+ 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());
+ maps.add(regionCountMap);
+ }
+ salesTotalDto.setDates(dates);
+ salesTotalDto.setCustomerTrends(maps);
+ return salesTotalDto;
}
@Override
- public String salesRanking(SalesDeliveryDto salesDeliveryDto) {
+ public List<SalesTotalDetailDto> salesRanking(SalesDeliveryDto salesDeliveryDto) {
+ List<SalesTotalDetailDto> salesTotalDetailDtos = new ArrayList<>();
List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays());
- return null;
+ 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, // 鍖哄煙鍚嶄綔涓簁ey
+ 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
- public String salesAmount(SalesDeliveryDto salesDeliveryDto) {
+ public SalesTotalDto salesAmount(SalesDeliveryDto salesDeliveryDto) {
+ SalesTotalDto salesTotalDto = new SalesTotalDto();
List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays());
- return null;
+ List<Map<String, Long>> maps = new ArrayList<>();
+ 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, // 鍖哄煙鍚嶄綔涓簁ey
+ 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.getPrice() != null ? delivery.getPrice().longValue() : 0L)
+ ));
+ }
+ regionCountMap.put("鍏ㄩ儴", salesDeliveries.stream()
+ .mapToLong(item -> item.getPrice() != null ? item.getPrice().longValue() : 0L)
+ .sum());
+ maps.add(regionCountMap);
+ }
+ salesTotalDto.setDates(dates);
+ salesTotalDto.setCustomerTrends(maps);
+ return salesTotalDto;
}
@Override
- public String salesDataRanking(SalesDeliveryDto salesDeliveryDto) {
+ public List<SalesTotalDetailDto> salesDataRanking(SalesDeliveryDto salesDeliveryDto) {
+ List<SalesTotalDetailDto> salesTotalDetailDtos = new ArrayList<>();
List<LocalDate> dates = convertDateList(salesDeliveryDto.getDays());
- return null;
+
+ return salesTotalDetailDtos;
}
@Override
@@ -2574,12 +2704,14 @@
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());
+ }
Date startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
List<Customer> customers = customerMapper.selectList(Wrappers.<Customer>lambdaQuery()
.between(Customer::getMaintenanceTime, startDate, endDate));
Map<String, Long> regionCountMap = Arrays.stream(AddressRegionEnum.values())
- .filter(addressRegionEnum -> addressRegionEnum.getRegionName().equals("SELF_PICKUP"))
.collect(Collectors.toMap(
AddressRegionEnum::getRegionName, // 鍖哄煙鍚嶄綔涓簁ey
enumItem -> 0L // 鍒濆鍊煎叏閮ㄤ负0
@@ -2596,7 +2728,7 @@
Collectors.counting() // 璁℃暟
));
}
- regionCountMap.put("ALLIN",customers.stream().count());
+ regionCountMap.put("鍏ㄩ儴",customers.stream().count());
maps.add(regionCountMap);
}
salesTotalDto.setDates(dates);
--
Gitblit v1.9.3