From bb6efa768f59b15ec6ee78915d1fe71fa67adc72 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 02 四月 2026 17:37:47 +0800
Subject: [PATCH] 销售看板调整
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 153 +++++++++++++++++++++++++++++---------------------
1 files changed, 89 insertions(+), 64 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 1df045f..cc1445b 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -36,6 +36,8 @@
import com.ruoyi.productionPlan.enums.AddressRegionEnum;
import com.ruoyi.productionPlan.mapper.SalesDeliveryMapper;
import com.ruoyi.productionPlan.pojo.SalesDelivery;
+import com.ruoyi.productionPlan.pojo.ProductionPlan;
+import com.ruoyi.productionPlan.service.ProductionPlanService;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysDictData;
import com.ruoyi.project.system.mapper.SysDeptMapper;
@@ -2564,7 +2566,7 @@
lastDay = date.with(TemporalAdjusters.lastDayOfYear());
}
LocalDate finalLastDay = lastDay;
- salesDeliveries = salesDeliveries
+ List<SalesDelivery> salesDeliverie = salesDeliveries
.stream()
.filter(delivery -> {
LocalDate deliveryDate = delivery.getDeliveryDate();
@@ -2576,9 +2578,9 @@
AddressRegionEnum::getRegionName, // 鍖哄煙鍚嶄綔涓簁ey
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 -> {
@@ -2588,7 +2590,7 @@
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);
@@ -2596,54 +2598,6 @@
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, // 鍖哄煙鍚嶄綔涓簁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
@@ -2660,7 +2614,7 @@
lastDay = date.with(TemporalAdjusters.lastDayOfYear());
}
LocalDate finalLastDay = lastDay;
- salesDeliveries = salesDeliveries
+ List<SalesDelivery> salesDeliverie = salesDeliveries
.stream()
.filter(delivery -> {
LocalDate deliveryDate = delivery.getDeliveryDate();
@@ -2672,9 +2626,9 @@
AddressRegionEnum::getRegionName, // 鍖哄煙鍚嶄綔涓簁ey
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 -> {
@@ -2684,7 +2638,7 @@
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);
@@ -2692,14 +2646,6 @@
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
@@ -3621,4 +3567,83 @@
map.put("materialInspection", materialInspection);
return map;
}
+
+ @Autowired
+ private ProductionPlanService productionPlanService;
+
+ @Override
+ public List<PlanTrendsDto> planTrends(Integer type) {
+ LocalDate now = LocalDate.now();
+ LocalDate startDate;
+ DateTimeFormatter formatter;
+ int points;
+
+ if (type == null) type = 1;
+
+ if (type == 1) { // 鍛�
+ startDate = now.with(DayOfWeek.MONDAY);
+ points = (int) ChronoUnit.DAYS.between(startDate, now) + 1;
+ formatter = DateTimeFormatter.ofPattern("MM-dd");
+ } else if (type == 2) { // 鏈�
+ startDate = now.with(TemporalAdjusters.firstDayOfMonth());
+ points = now.getDayOfMonth();
+ formatter = DateTimeFormatter.ofPattern("MM-dd");
+ } else { // 骞�
+ startDate = now.with(TemporalAdjusters.firstDayOfYear());
+ points = now.getMonthValue();
+ formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+ }
+
+ Map<String, PlanTrendsDto> resultMap = new LinkedHashMap<>();
+ for (int i = 0; i < points; i++) {
+ String label = (type == 3)
+ ? startDate.plusMonths(i).format(formatter)
+ : startDate.plusDays(i).format(formatter);
+ PlanTrendsDto dto = new PlanTrendsDto();
+ dto.setDateStr(label);
+ dto.setPlannedVolume(BigDecimal.ZERO);
+ dto.setLowerVolume(BigDecimal.ZERO);
+ dto.setCompletionVolume(BigDecimal.ZERO);
+ resultMap.put(label, dto);
+ }
+ // 缁熻璁″垝閲�
+ List<ProductionPlan> plans = productionPlanService.list(Wrappers.<ProductionPlan>lambdaQuery()
+ .ge(ProductionPlan::getStartDate, Date.from(startDate.atStartOfDay(ZoneId.systemDefault()).toInstant())));
+ for (ProductionPlan plan : plans) {
+ if (plan.getStartDate() == null || plan.getVolume() == null) continue;
+ LocalDate d = plan.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ String label = d.format(formatter);
+ if (resultMap.containsKey(label)) {
+ PlanTrendsDto dto = resultMap.get(label);
+ dto.setPlannedVolume(dto.getPlannedVolume().add(plan.getVolume()));
+ }
+ }
+ // 缁熻涓嬪彂閲�
+ List<ProductOrder> orders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery()
+ .ge(ProductOrder::getStartTime, startDate.atStartOfDay()));
+ for (ProductOrder order : orders) {
+ if (order.getStartTime() == null || order.getQuantity() == null) continue;
+ LocalDate d = order.getStartTime().toLocalDate();
+ String label = d.format(formatter);
+ if (resultMap.containsKey(label)) {
+ PlanTrendsDto dto = resultMap.get(label);
+ dto.setLowerVolume(dto.getLowerVolume().add(order.getQuantity()));
+ }
+ }
+ // 缁熻瀹屾垚閲�
+ List<ProductionProductOutput> outputs = productionProductOutputMapper.selectList(Wrappers.<ProductionProductOutput>lambdaQuery()
+ .ge(ProductionProductOutput::getCreateTime, startDate.atStartOfDay()));
+ for (ProductionProductOutput output : outputs) {
+ if (output.getCreateTime() == null || output.getQuantity() == null) continue;
+ LocalDate d = output.getCreateTime().toLocalDate();
+ String label = d.format(formatter);
+ if (resultMap.containsKey(label)) {
+ PlanTrendsDto dto = resultMap.get(label);
+ dto.setCompletionVolume(dto.getCompletionVolume().add(output.getQuantity()));
+ }
+ }
+
+ return new ArrayList<>(resultMap.values());
+ }
+
}
--
Gitblit v1.9.3