统计销量前十的订单
 
传入参数:
传入begin和end两个时间
返回参数
返回nameList和numberList两个String类型的列表
 
 
controller层
    @GetMapping("/top10")
    public Result<SalesTop10ReportVO> top10(
            @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
            @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
        SalesTop10ReportVO salesTop10ReportVO = reportService.getSaleTop10(begin, end);
        return Result.success(salesTop10ReportVO);
    }实现类
    public SalesTop10ReportVO getSaleTop10(LocalDate begin, LocalDate end) {
        LocalDateTime beginTime = LocalDateTime.of(begin, LocalTime.MIN);
        LocalDateTime endTime = LocalDateTime.of(end, LocalTime.MAX);
        List<GoodsSalesDTO> saleTop = orderMapper.getSaleTop(beginTime, endTime);
        List<String> nameList = saleTop.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());
        String namelist = StringUtils.join(nameList, ",");
        List<Integer> numberList = saleTop.stream().map(GoodsSalesDTO::getNumber).collect(Collectors.toList());
        String numberlist = StringUtils.join(numberList, ",");
        SalesTop10ReportVO salesTop10ReportVO = SalesTop10ReportVO.builder()
                .nameList(namelist)
                .numberList(numberlist)
                .build();
        return salesTop10ReportVO;
    }mapper
sql:
select od.name,  sum(od.number) number from order_detail od,orders o where od.order_id = o.id and o.status = 5 AND o.order_time < '2022-10-30' AND o.order_time > '2022-10-01'
GROUP BY od.name 
ORDER BY `number` DESC 
limit 0,10 <select id="getSaleTop" resultType="com.sky.dto.GoodsSalesDTO">
        select od.name,  sum(od.number) number
        from order_detail od,orders o
        where od.order_id = o.id and o.status = 5
        <if test="begin != null">
            AND o.order_time > #{begin}
        </if>
        <if test="end != null">
            AND o.order_time < #{end}
        </if>
        GROUP BY od.name
        ORDER BY `number` DESC
        limit 0,10
    </select>
