陶杰
2024-09-27 43d728030dca41209677b0a7e314de2ce0a21aa9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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<OrderReportResultVO> getSalePage(Page page, QueryOrderDTO dto) {
 
        List<OrderReportCalendarBO> calendarBOList= calendarService.getOrderDatePage(page,dto);
 
        final List<OrderReportResultVO> 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);
    }
}