From b469466854d467e2f1607ae291b1380e5e2f4105 Mon Sep 17 00:00:00 2001 From: zvv <508748680@qq.com> Date: Mon, 6 Apr 2026 18:00:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=90=A5=E4=B8=9A=E9=A2=9D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ReportController.java | 44 +++++++++++ .../main/java/com/sky/mapper/OrderMapper.java | 10 +++ .../java/com/sky/service/ReportService.java | 17 +++++ .../sky/service/impl/ReportServiceImpl.java | 73 +++++++++++++++++++ .../src/main/resources/mapper/OrderMapper.xml | 16 ++++ 5 files changed, 160 insertions(+) create mode 100644 sky-server/src/main/java/com/sky/controller/admin/ReportController.java create mode 100644 sky-server/src/main/java/com/sky/service/ReportService.java create mode 100644 sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java 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 new file mode 100644 index 0000000..8eb99fd --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java @@ -0,0 +1,44 @@ +package com.sky.controller.admin; + + +import com.sky.result.Result; +import com.sky.service.ReportService; +import com.sky.vo.TurnoverReportVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDate; + +@RestController() +@RequestMapping("/admin/report") +@Api(tags = "数据统计相关接口") +@Slf4j +public class ReportController { + + + @Autowired + private ReportService reportService; + + + + /** + * 营业额统计 + * @param begin + * @param end + * @return + */ + @GetMapping("/turnoverStatistics") + @ApiOperation("营业额统计") + public Result turnoverStatistics( + @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, + @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){ + log.info("营业额数据统计:{},{}", begin, end); + return Result.success(reportService.getTurnoverStatistics(begin, end)); + } +} 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 7df2d1c..7329dc9 100644 --- a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Select; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; @Mapper public interface OrderMapper { @@ -66,4 +67,13 @@ public interface OrderMapper { */ @Select("select * from orders where status = #{status} and order_time < #{orderTime}") List getByStatusAndOrderTimeLT(Integer status, LocalDateTime orderTime); + + + /** + * 根据动态条件统计营业额数据 + * @param map + * @return + */ + //select sum(amount) from orders where order_time < ? and order_time > ? and status = 5 + Double sumByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/service/ReportService.java b/sky-server/src/main/java/com/sky/service/ReportService.java new file mode 100644 index 0000000..8580994 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/ReportService.java @@ -0,0 +1,17 @@ +package com.sky.service; + +import com.sky.vo.TurnoverReportVO; + +import java.time.LocalDate; + +public interface ReportService { + + + /** + *统计指定时间内的营业额数据 + * @param begin + * @param end + * @return + */ + TurnoverReportVO getTurnoverStatistics(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 new file mode 100644 index 0000000..2d331c0 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java @@ -0,0 +1,73 @@ +package com.sky.service.impl; + +import com.sky.entity.Orders; +import com.sky.mapper.OrderMapper; +import com.sky.service.ReportService; +import com.sky.vo.TurnoverReportVO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@Service +@Slf4j +public class ReportServiceImpl implements ReportService { + + @Autowired + private OrderMapper orderMapper; + + + /** + * 统计指定时间内的营业额数据 + * @param begin + * @param end + * @return + */ + @Override + public TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end) { + + //当前集合用于存放从begin到end范围内每天的日期 + List dateList = new ArrayList(); + dateList.add(begin); + while(!begin.equals(end)){ + //日期计算 计算指定日期的后一天对应的日期 + begin = begin.plusDays(1); + dateList.add(begin); + } + + //设置营业额集合 + List turnoverList = new ArrayList<>(); + for(LocalDate date:dateList){ + //查询date对应的营业额 状态为“已完成”的订单的金额总和 + LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX); + + Map map = new HashMap(); + map.put("beginTime",beginTime); + map.put("endTime",endTime); + map.put("status", Orders.COMPLETED); + Double turnover = orderMapper.sumByMap(map); + turnover = turnover == null ? 0.0 : turnover; + turnoverList.add(turnover); + } + + //将日期转为字符串 + String join = StringUtils.join(dateList, ","); + + TurnoverReportVO turnoverReportVO = TurnoverReportVO.builder() + .dateList(join) + .turnoverList(StringUtils.join(turnoverList, ",")) + .build(); + + return turnoverReportVO; + } +} diff --git a/sky-server/src/main/resources/mapper/OrderMapper.xml b/sky-server/src/main/resources/mapper/OrderMapper.xml index 7319f59..73df9e8 100644 --- a/sky-server/src/main/resources/mapper/OrderMapper.xml +++ b/sky-server/src/main/resources/mapper/OrderMapper.xml @@ -67,4 +67,20 @@ order by order_time desc + + +