package com.mzl.flower.service.impl.report; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.report.QueryOrderDTO; import com.mzl.flower.dto.response.report.OrderReportCalendarBO; import com.mzl.flower.dto.response.report.OrderReportResultVO; import com.mzl.flower.mapper.report.OrderReportMapper; import com.mzl.flower.service.calendar.CalendarService; import com.mzl.flower.service.report.OrderReportService; import com.mzl.flower.utils.ExcelExportUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.stream.Collectors; @Service public class OrderReportServiceImpl implements OrderReportService { @Autowired private CalendarService calendarService; @Autowired private OrderReportMapper orderReportMapper; @Override public Page getSalePage(Page page, QueryOrderDTO dto) { List calendarBOList= calendarService.getOrderDatePage(page,dto); final List list = calendarBOList.stream().map(calendarBO -> { BeanUtils.copyProperties(dto,calendarBO); OrderReportResultVO vo2=orderReportMapper.getOrderDateReport(calendarBO); vo2.setOrderDate(calendarBO.getCalDate()); return vo2; }).collect(Collectors.toList()); page.setRecords(list); return page; } @Override public OrderReportResultVO getSaleStatis(QueryOrderDTO dto) { // 计算开始时间和结束时间 OrderReportCalendarBO bo=new OrderReportCalendarBO(); BeanUtils.copyProperties(dto,bo); bo.setStartDate(calculateStartTime(dto.getStartDate())); bo.setEndDate(calculateEndTime(dto.getEndDate())); OrderReportResultVO vo2=orderReportMapper.getOrderDateReport(bo); return vo2; } @Override public void exportSalesList(HttpServletResponse response, QueryOrderDTO dto) { } // 计算 startDate 的前一天 17:00:00 public static LocalDateTime calculateStartTime(LocalDate startDate) { LocalDate previousDay = startDate.minusDays(1); LocalTime fivePM = LocalTime.of(17, 0, 0); // 下午 17:00:00 return LocalDateTime.of(previousDay, fivePM); } // 计算 endDate 当天的 17:00:00 public static LocalDateTime calculateEndTime(LocalDate endDate) { LocalTime fivePM = LocalTime.of(17, 0, 0); // 下午 17:00:00 return LocalDateTime.of(endDate, fivePM); } }