
传入参数:
传入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) numberfrom order_detail od,orders owhere 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.nameORDER BY `number` DESClimit 0,10</select>
