diff --git a/sky-server/pom.xml b/sky-server/pom.xml index 23f9085..bde19e4 100644 --- a/sky-server/pom.xml +++ b/sky-server/pom.xml @@ -96,6 +96,7 @@ spring-boot-starter-cache + org.springframework.boot spring-boot-starter-websocket @@ -122,11 +123,6 @@ minio 8.5.2 - - - org.springframework.boot - spring-boot-starter-websocket - 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..7cd3fd0 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/ReportController.java @@ -0,0 +1,40 @@ +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.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 javax.annotation.Resource; +import java.time.LocalDate; + +@RestController +@RequestMapping("/admin/report") +@Api(tags = "数据相关接口") +@Slf4j +public class ReportController { + @Resource + private ReportService reportService; + + /** + * 营业额统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return TurnoverReportVO + */ + @ApiOperation("营业额统计") + @GetMapping("/turnoverStatistics") + public Result turnoverReport(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, + @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { + log.info("营业额统计,开始时间:{};结束时间:{}", begin, end); + TurnoverReportVO turnoverStatistics = reportService.getTurnoverStatistics(begin, end); + return Result.success(turnoverStatistics); + } +} 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 50edd24..ccab665 100644 --- a/sky-server/src/main/java/com/sky/mapper/OrderMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/OrderMapper.java @@ -6,6 +6,7 @@ import com.sky.entity.Orders; import org.apache.ibatis.annotations.Mapper; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; @Mapper @@ -70,4 +71,12 @@ public interface OrderMapper { * @param status */ Integer countStatus(Integer status); + + /** + * 根据动态条件统计营业额数据 + * + * @param map 集合 + * @return Double + */ + Double sumByMap(HashMap 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..c6808b8 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/ReportService.java @@ -0,0 +1,16 @@ +package com.sky.service; + +import com.sky.vo.TurnoverReportVO; + +import java.time.LocalDate; + +public interface ReportService { + /** + * 营业额统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return TurnoverReportVO + */ + 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..658a6d6 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java @@ -0,0 +1,56 @@ +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 org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.HashMap; + +@Service +public class ReportServiceImpl implements ReportService { + @Resource + private OrderMapper orderMapper; + + /** + * 营业额统计 + * + * @param begin 看起始时间 + * @param end 结束时间 + * @return TurnoverReportVO + */ + @Override + public TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end) { + ArrayList dateArrayList = new ArrayList<>(); + dateArrayList.add(begin); + // 循环加天 + while (!begin.equals(end)) { + begin = begin.plusDays(1); + dateArrayList.add(begin); + } + // 查询date日期营业额 + ArrayList turnoverList = new ArrayList<>(); + for (LocalDate date : dateArrayList) { + // 查询date日期对应营业额数据,营业额是:状态已完成订单金额合计 + LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX); + + HashMap map = new HashMap<>(); + map.put("begin", beginTime); + map.put("end", endTime); + map.put("status", Orders.COMPLETED); + Double turnover = orderMapper.sumByMap(map); + turnover = turnover == null ? 0.0 : turnover; + turnoverList.add(turnover); + } + + return TurnoverReportVO.builder().dateList(StringUtils.join(dateArrayList, ",")).turnoverList(StringUtils.join(turnoverList, ",")).build(); + } +} diff --git a/sky-server/src/main/resources/mapper/OrderMapper.xml b/sky-server/src/main/resources/mapper/OrderMapper.xml index a15c249..f7cbd95 100644 --- a/sky-server/src/main/resources/mapper/OrderMapper.xml +++ b/sky-server/src/main/resources/mapper/OrderMapper.xml @@ -109,4 +109,20 @@ from orders where status = #{status} + + +