无关风月
2024-11-12 3ec572e2cb7adf7d33d2018b24c003d9ef18906a
xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java
@@ -4,6 +4,7 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.DateUtils;
import com.xinquan.common.core.utils.WebUtils;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.PageDTO;
@@ -35,6 +36,9 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -60,6 +64,7 @@
    private RemoteMeditationService remoteMeditationService;
    @Resource
    private RemoteOrderService remoteOrderService;
    @PostMapping("/homeStatistics")
    @ApiOperation(value = "首页统计",tags = "管理后台-首页统计")
    public R<HomeVO> bannerList(@RequestBody HomeDto homeDto) {
@@ -112,9 +117,7 @@
        if (!StringUtils.hasLength(homeDto.getTime())){
            homeDto.setTime("1");
        }
        if(homeDto.getTimeType() == null){
            homeDto.setTimeType(1);
        }
        List<Order> data6 = remoteOrderService.getOrderList(homeDto.getStatus(), homeDto.getTimeType(), homeDto.getTime()).getData();
        homeVO.setOrderCount(data6.size()+"");
        BigDecimal bigDecimal = new BigDecimal("0");
@@ -208,27 +211,53 @@
                }
                break;
        }
        if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
            List<LocalDate> localDates = generateDateList(homeDto.getTime());
            for (LocalDate localDate : localDates) {
                x.put(localDate+"",0);
                x1.put(localDate+"",0);
                x2.put(localDate+"",0);
            }
        }
        for (Order order : data6) {
            int value = order.getCreateTime().getMonth().getValue();
            int value1 = order.getCreateTime().getDayOfMonth();
            LocalDateTime createTime = order.getCreateTime();
            LocalDate localDate = createTime.toLocalDate();
            switch (order.getOrderFrom()){
                case 1:
                    switch (homeDto.getTimeType()){
                        case 1:
                            // 获取订单月份
                            x.put(value+"",(int)x.get(value+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x.put(localDate+"",(int)x.get(value+"")+1);
                            }else{
                                x.put(value+"",(int)x.get(value+"")+1);
                            }
                            break;
                        case 2:
                            Date date = new Date();
                            String format = simpleDateFormat.format(date);
                            x.put(format,(int)x.get(format)+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x.put(localDate+"",(int)x.get(value+"")+1);
                            }else{
                                x.put(format,(int)x.get(format)+1);
                            }
                            break;
                        case 3:
                            x.put(value1+"",(int)x.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x.put(localDate+"",(int)x.get(value+"")+1);
                            }else{
                                x.put(value1+"",(int)x.get(value1+"")+1);
                            }
                            break;
                        case 4:
                            x.put(value1+"",(int)x.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x.put(localDate+"",(int)x.get(value+"")+1);
                            }else{
                                x.put(value1+"",(int)x.get(value1+"")+1);
                            }
                            break;
                    }
                    break;
@@ -236,18 +265,34 @@
                    switch (homeDto.getTimeType()){
                        case 1:
                            // 获取订单月份
                            x1.put(value+"",(int)x1.get(value+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x1.put(localDate+"",(int)x1.get(value+"")+1);
                            }else{
                                x1.put(value+"",(int)x1.get(value+"")+1);
                            }
                            break;
                        case 2:
                            Date date = new Date();
                            String format = simpleDateFormat.format(date);
                            x1.put(format,(int)x1.get(format)+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x1.put(localDate+"",(int)x1.get(value+"")+1);
                            }else{
                                x1.put(format,(int)x1.get(format)+1);
                            }
                            break;
                        case 3:
                            x1.put(value1+"",(int)x1.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x1.put(localDate+"",(int)x1.get(value+"")+1);
                            }else{
                                x1.put(value+"",(int)x1.get(value+"")+1);
                            }
                            break;
                        case 4:
                            x1.put(value1+"",(int)x1.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x1.put(localDate+"",(int)x1.get(value+"")+1);
                            }else{
                                x1.put(value+"",(int)x1.get(value+"")+1);
                            }
                            break;
                    }
                    break;
@@ -255,33 +300,40 @@
                    switch (homeDto.getTimeType()){
                        case 1:
                            // 获取订单月份
                            x2.put(value+"",(int)x2.get(value+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x2.put(localDate+"",(int)x2.get(value+"")+1);
                            }else{
                                x2.put(value+"",(int)x2.get(value+"")+1);
                            }
                            break;
                        case 2:
                            Date date = new Date();
                            String format = simpleDateFormat.format(date);
                            x2.put(format,(int)x2.get(format)+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x2.put(localDate+"",(int)x2.get(value+"")+1);
                            }else{
                                x2.put(format,(int)x2.get(format)+1);
                            }
                            break;
                        case 3:
                            x2.put(value1+"",(int)x2.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x2.put(localDate+"",(int)x2.get(value+"")+1);
                            }else{
                                x2.put(value+"",(int)x2.get(value+"")+1);
                            }
                            break;
                        case 4:
                            x2.put(value1+"",(int)x2.get(value1+"")+1);
                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
                                x2.put(localDate+"",(int)x2.get(value+"")+1);
                            }else{
                                x2.put(value+"",(int)x2.get(value+"")+1);
                            }
                            break;
                    }
                    break;
            }
        }
        switch (homeDto.getTimeType()){
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
        }
        // 对x的key值进行从小到大排序
        Map<String, Object> sortedMap = new TreeMap<>(Comparator.reverseOrder());
        sortedMap.putAll(x);
@@ -294,6 +346,23 @@
        homeVO.setOrderVipList(sortedMap2);
        return R.ok(homeVO);
    }
    public static List<LocalDate> generateDateList(String dateRange) {
        // 定义日期格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // 解析日期范围字符串
        String[] dates = dateRange.split(" - ");
        LocalDate startDate = LocalDate.parse(dates[0], formatter);
        LocalDate endDate = LocalDate.parse(dates[1], formatter);
        // 创建日期列表
        List<LocalDate> dateList = new ArrayList<>();
        for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
            dateList.add(date);
        }
        return dateList;
    }
    @PutMapping("/homeStatisticsExport")
    @ApiOperation(value = "首页统计-导出",tags = "管理后台-首页统计")
    public void homeStatisticsExport() {