From c65b6f742666c953022b6331aed0cf9b4ae731cb Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 2 Dec 2025 13:33:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=8D=E7=A9=B9=E5=A4=96=E5=8D=96--=E9=94=80?= =?UTF-8?q?=E9=87=8F=E5=89=8D=E5=8D=81=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ReportController.java | 15 +++++++ .../main/java/com/sky/mapper/OrderMapper.java | 3 ++ .../java/com/sky/service/ReportService.java | 9 ++++ .../sky/service/impl/ReportServiceImpl.java | 45 +++++++++++++++++++ .../src/main/resources/mapper/OrderMapper.xml | 15 +++++++ 5 files changed, 87 insertions(+) diff --git a/sky-server/src/main/java/com/sky/controller/admin/ReportController.java b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java index 36fb949..c32e421 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/ReportController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java @@ -4,6 +4,7 @@ package com.sky.controller.admin; import com.sky.result.Result; import com.sky.service.ReportService; import com.sky.vo.OrderReportVO; +import com.sky.vo.SalesTop10ReportVO; import com.sky.vo.TurnoverReportVO; import com.sky.vo.UserReportVO; import io.swagger.annotations.Api; @@ -70,4 +71,18 @@ public class ReportController { return Result.success(vo); } + + @GetMapping("/top10") + @ApiOperation("销量前十统计") + public Result top10( + @DateTimeFormat(pattern = "yyyy-MM-dd") + LocalDate begin, + @DateTimeFormat(pattern = "yyyy-MM-dd") + LocalDate end){ + log.info("销量前十统计:{},{}",begin,end); + //调用业务层,销量前十统计功能 + SalesTop10ReportVO vo = reportService.getTop10(begin,end); + + return Result.success(vo); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java index 232619a..324a70e 100644 --- a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java @@ -1,6 +1,7 @@ package com.sky.mapper; import com.github.pagehelper.Page; +import com.sky.dto.GoodsSalesDTO; import com.sky.dto.OrdersPageQueryDTO; import com.sky.entity.Orders; import org.apache.ibatis.annotations.*; @@ -62,4 +63,6 @@ public interface OrderMapper { Double sumByMap(Map map); Integer countByMap(Map map); + + List getTop10(LocalDateTime begin, LocalDateTime end); } diff --git a/sky-server/src/main/java/com/sky/service/ReportService.java b/sky-server/src/main/java/com/sky/service/ReportService.java index 7b21cbf..4c2847a 100644 --- a/sky-server/src/main/java/com/sky/service/ReportService.java +++ b/sky-server/src/main/java/com/sky/service/ReportService.java @@ -1,6 +1,7 @@ package com.sky.service; import com.sky.vo.OrderReportVO; +import com.sky.vo.SalesTop10ReportVO; import com.sky.vo.TurnoverReportVO; import com.sky.vo.UserReportVO; @@ -30,4 +31,12 @@ public interface ReportService { * @return */ OrderReportVO getordersStatistics(LocalDate begin, LocalDate end); + + /** + * 销量前十统计功能 + * @param begin + * @param end + * @return + */ + SalesTop10ReportVO getTop10(LocalDate begin, LocalDate end); } diff --git a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java index 038718c..877c9fb 100644 --- a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java @@ -1,10 +1,12 @@ package com.sky.service.impl; +import com.sky.dto.GoodsSalesDTO; import com.sky.entity.Orders; import com.sky.mapper.OrderMapper; import com.sky.mapper.UserMapper; import com.sky.service.ReportService; import com.sky.vo.OrderReportVO; +import com.sky.vo.SalesTop10ReportVO; import com.sky.vo.TurnoverReportVO; import com.sky.vo.UserReportVO; import org.apache.commons.lang3.StringUtils; @@ -18,6 +20,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class ReportServiceImpl implements ReportService { @@ -185,4 +188,46 @@ public class ReportServiceImpl implements ReportService { return orderReportVO; } + + /** + * 销量前十统计功能 + * @param begin + * @param end + * @return + */ + @Override + public SalesTop10ReportVO getTop10(LocalDate begin, LocalDate end) { + + //商品名称列表,以逗号分隔,例如:鱼香肉丝,宫保鸡丁,水煮鱼 + List nameList = new ArrayList<>(); + + //销量列表,以逗号分隔,例如:260,215,200 + List numberList = new ArrayList<>(); + + //统计菜品,不同口味的菜品属于同一种菜品,应该要统计到一起,并且要以已完成的订单的数据为准,所以要从订单相关的明细表中获取数据 + //在明细表中以name字段来分组查询,查询出对应菜品名的销量为多少 + /* + select od.name , sum(od.number) as num + from order_detail od ,orders o + where od.order_id = o.id and o.order_time > ? and o.order_time < ? + group by od.name order by num DESC; + */ + + //准备好开始和结束时间 + LocalDateTime beginTime = LocalDateTime.of(begin, LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(end, LocalTime.MAX); + + //根据时间区间,计算出该区间的销量前十的商品 + List dtoList = orderMapper.getTop10(beginTime,endTime); + nameList = dtoList.stream().map(dto -> dto.getName()).collect(Collectors.toList()); + numberList = dtoList.stream().map(dto -> dto.getNumber()).collect(Collectors.toList()); + + //封装数据 + SalesTop10ReportVO salesTop10ReportVO = SalesTop10ReportVO.builder() + .numberList(StringUtils.join(numberList, ",")) + .nameList(StringUtils.join(nameList, ",")) + .build(); + + return salesTop10ReportVO; + } } diff --git a/sky-server/src/main/resources/mapper/OrderMapper.xml b/sky-server/src/main/resources/mapper/OrderMapper.xml index d0693c0..1f3e383 100644 --- a/sky-server/src/main/resources/mapper/OrderMapper.xml +++ b/sky-server/src/main/resources/mapper/OrderMapper.xml @@ -86,4 +86,19 @@ + + \ No newline at end of file