汇总过去12个月的数据

 /**
     * 获取当前月份往前推12个月的数组,月份正序排列
     * eg: [2022-03, 2022-04, 2022-05, 2022-06, 2022-07, 2022-08, 2022-09, 2022-10, 2022-11, 2022-12, 2023-01, 2023-02]
     */
    public static List<String> getYearMonthFromNow() {
        ArrayList<String> monthList = new ArrayList<>();
        LocalDate today = LocalDate.now();
        for (long i = 11L; i >= 0L; i--) {
            LocalDate localDate = today.minusMonths(i);
            String ss = localDate.toString().substring(0, 7);
            monthList.add(ss);
        }
        return monthList;
    }
@Override
    public StatisticsYearRevenue getLastYearRevenue() {
        //倒序获取12个月的充值记录
        List<MonthCardRecharge> cardRechargeList = monthCardRechargeService.getRechargeOrderByMonth();
        //倒序获取12个月的停车缴费记录
        List<ParkingPayment> parkingPaymentList = parkingPaymentService.getParkingPaymentOrderByMonth();
        //获取当前月份向前推12个月的列表
        List<String> monthList = getYearMonthFromNow();
        ArrayList<BigDecimal> revenueList = new ArrayList<>();
        //组装月卡充值记录
        HashMap<String, BigDecimal> cardRechargeMap = new HashMap<>();
        cardRechargeList.forEach(charge ->{
            cardRechargeMap.put(charge.getMonth(),charge.getRevenue());
        });
        //组装缴费记录
        HashMap<String, BigDecimal> parkingPaymentMap = new HashMap<>();
        parkingPaymentList.forEach(payment ->{
            parkingPaymentMap.put(payment.getMonth(),payment.getRevenue());
        });
        //组装每月收入
        monthList.forEach(month ->{
            BigDecimal d = new BigDecimal(0);
            if (cardRechargeMap.get(month)!= null ){
                d= d.add(cardRechargeMap.get(month)) ;
            }
            if (parkingPaymentMap.get(month)!= null){
                d = d.add(parkingPaymentMap.get(month));
            }
            revenueList.add(d);
        });
        StatisticsYearRevenue vo = new StatisticsYearRevenue();
        vo.setMonthList(monthList);
        vo.setRevenueList(revenueList);
        return vo;
    }
SELECT
	DATE_FORMAT( payment_time, '%Y-%m' ) AS month,
	sum( actual_charge ) AS revenue 
FROM
	parking_payment 
WHERE
	payment_time != '' 
GROUP BY
	month
ORDER BY
	month DESC
LIMIT 12;


SELECT
	DATE_FORMAT( create_time, '%Y-%m' ) AS MONTH,
	sum( payment_amount ) AS revenue 
FROM
	month_card_recharge 
GROUP BY
MONTH 
ORDER BY
	MONTH DESC;
	
	
	
	
	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值