无关风月
2025-02-13 52d5c9930a199430d0f524e24e85eb65e09514c9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -1,5 +1,7 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.TAppUser;
@@ -524,8 +526,9 @@
            startTime1 = split[0];
            startTime2 = split[1];
        }
        List<TChargingOrder> total = chargingOrderList.selectList(new LambdaQueryWrapper<>(TChargingOrder.class)
                .eq(TChargingOrder::getRechargePaymentStatus, 2));
        PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
        PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,999999999);
        List<Site> data6 = siteClient.getSiteAll().getData();
        List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
        List<TChargingPile> pileList = chargingGunClient.getAllPile().getData();
@@ -575,7 +578,7 @@
            dto.setSiteIds(siteIds);
        List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2);
        List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList(pageInfo1,dto,startTime1,startTime2);
        List<ChargingBillListVO> list1 = this.baseMapper.chargingBillListNoLimit(dto,startTime1,startTime2);
        BigDecimal paymentAmountTotal = new BigDecimal("0");
        BigDecimal orderAmountTotal = new BigDecimal("0");
        BigDecimal electrovalenceTotal = new BigDecimal("0");
@@ -640,19 +643,21 @@
            // 账单周期
            chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
            // 获取 LocalDate 对象
            LocalDate date = localDate.toLocalDate();
//            // 获取该月份的第一天
            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
            // 获取该月份的最后一天
            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                    .between("pay_time", firstDayOfMonth.atTime(0, 0, 0), lastDayOfMonth.atTime(23, 59, 59))
                    .eq("status", 5)
                    .eq("recharge_payment_status", 2);
            if (chargingBillListVO.getType() == 2) {
                eq.eq("site_id", chargingBillListVO.getSiteId());
            }
            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
            LocalDateTime lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
            LocalDateTime firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
//            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
//                    .between("pay_time", firstDayOfMonth.withHour(0).withMinute(0).withSecond(0), lastDayOfMonth.withHour(23).withMinute(59).withSecond(59))
//                    .eq("recharge_payment_status", 2);
//            if (chargingBillListVO.getType() == 2) {
//                eq.eq("site_id", chargingBillListVO.getSiteId());
//            }
//            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
            List<TChargingOrder> tChargingOrders = total.stream().filter(e -> chargingBillListVO.getType() == 2 ?
                    e.getSiteId().equals(chargingBillListVO.getSiteId()) : true &&
                    e.getPayTime().isBefore(lastDayOfMonth.withHour(23).withMinute(59).withSecond(59))
                    && e.getPayTime().isAfter(firstDayOfMonth.withHour(0).withMinute(0).withSecond(0))).collect(Collectors.toList());
            int chargingSecond = 0;
            BigDecimal paymentAmount = new BigDecimal("0");
            BigDecimal orderAmount = new BigDecimal("0");
@@ -726,36 +731,32 @@
                BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge());
                tChargingOrder.setTotalAmount(add.toString());
                tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0");
                UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData();
                if (data5!=null){
                    if (tChargingOrder.getStartTime()!=null && tChargingOrder.getEndTime()!=null){
                        LocalDateTime startTime = tChargingOrder.getStartTime();
                        LocalDateTime endTime = tChargingOrder.getEndTime();
                        // 计算时间差 单位秒
                        long between = ChronoUnit.SECONDS.between(startTime, endTime);
                        chargingSecond+=between;
                        // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟
                if (tChargingOrder.getStartTime()!=null && tChargingOrder.getEndTime()!=null){
                    LocalDateTime startTime = tChargingOrder.getStartTime();
                    LocalDateTime endTime = tChargingOrder.getEndTime();
                    // 计算时间差 单位秒
                    long between = ChronoUnit.SECONDS.between(startTime, endTime);
                    chargingSecond+=between;
                    // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟
                            // 计算小时、分钟和秒
                            long hours = between / 60 / 60;
                            long minutes = (between % 3600) / 60;
                            long seconds = between % 60; // 如果没有秒数,则默认是0
                            StringBuilder result = new StringBuilder();
                            if (hours > 0) {
                                result.append(hours).append("小时");
                            }
                            if (minutes > 0) {
                                result.append(minutes).append("分钟");
                            }
                            if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数
                                result.append(seconds).append("秒");
                            }
                            tChargingOrder.setChargingTime(result.toString());
                        // 计算小时、分钟和秒
                        long hours = between / 60 / 60;
                        long minutes = (between % 3600) / 60;
                        long seconds = between % 60; // 如果没有秒数,则默认是0
                        StringBuilder result = new StringBuilder();
                        if (hours > 0) {
                            result.append(hours).append("小时");
                        }
                        if (minutes > 0) {
                            result.append(minutes).append("分钟");
                        }
                        if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数
                            result.append(seconds).append("秒");
                        }
                        tChargingOrder.setChargingTime(result.toString());
                    }
                    tChargingOrder.setEndSoc(data5.getSoc().toString());
                }
                TAppUser data3 = userList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserId())).findFirst().orElse(null);
                if (tChargingOrder.getAppUserCarId()!=null){
                    TAppUserCar tAppUserCar = carList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserCarId())).findFirst().orElse(null);
@@ -804,9 +805,9 @@
            // 格式化为字符串
            String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds);
            chargingBillVO.setChargingTime(timeString);
            chargingBillListVO.setOrderAmount(orderAmount.subtract(refundAmount));
            chargingBillListVO.setOrderAmount(paymentAmount);
            chargingBillListVO.setPaymentAmount(chargingBillListVO.getOrderAmount().subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN));
            chargingBillListVO.setPaymentAmount(paymentAmount.subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN));
            chargingBillListVO.setElectrovalence(electrovalence);
            chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,BigDecimal.ROUND_DOWN));
            chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN));
@@ -850,21 +851,21 @@
            // 账单周期
            chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
            // 获取 LocalDate 对象
            LocalDate date = localDate.toLocalDate();
//            // 获取该月份的第一天
            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
            // 获取该月份的最后一天
            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
//            LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN);
//            LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX);
            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
                    .eq("status", 5)
                    .eq("recharge_payment_status", 2);
            if (chargingBillListVO.getType() == 2) {
                eq.eq("site_id", chargingBillListVO.getSiteId());
            }
            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
            LocalDateTime lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
            LocalDateTime firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
//            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
//                    .between("pay_time", firstDayOfMonth.withHour(0).withMinute(0).withSecond(0), lastDayOfMonth.withHour(23).withMinute(59).withSecond(59))
//                    .eq("recharge_payment_status", 2);
//            if (chargingBillListVO.getType() == 2) {
//                eq.eq("site_id", chargingBillListVO.getSiteId());
//            }
//            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
            List<TChargingOrder> tChargingOrders = total.stream().filter(e -> chargingBillListVO.getType() == 2 ?
                    e.getSiteId().equals(chargingBillListVO.getSiteId()) : true &&
                    e.getPayTime().isBefore(lastDayOfMonth.withHour(23).withMinute(59).withSecond(59))
                    && e.getPayTime().isAfter(firstDayOfMonth.withHour(0).withMinute(0).withSecond(0))).collect(Collectors.toList());
            orderCount+=tChargingOrders.size();
            BigDecimal paymentAmount = new BigDecimal("0");
            BigDecimal orderAmount = new BigDecimal("0");
@@ -925,7 +926,7 @@
        }
        chargingBillVO.setChargingCapacity(chargingCapacityTotal);
        chargingBillVO.setPaymentAmount(paymentAmountTotal.subtract(commissionAmountTotal).subtract(sharingAmountTotal).setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillVO.setOrderAmount(orderAmountTotal.subtract(refundAmountTotal).setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, BigDecimal.ROUND_DOWN));
        chargingBillVO.setOrderCount(orderCount);
@@ -938,13 +939,8 @@
    }
    public static void main(String[] args) {
        int totalSeconds = 1201;
        int hours = totalSeconds / 3600;
        int minutes = (totalSeconds % 3600) / 60;
        int seconds = totalSeconds % 60;
        LocalDateTime localDate = LocalDateTime.now().withMonth(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
        String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds);
        System.out.println(timeString);
    }
}