Pu Zhibing
2024-10-29 e7b6173a930a15c84cb90bd15d2ab9cc4e7d9cac
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderRefund;
import com.ruoyi.order.api.vo.ChargingBillListVO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,6 +24,7 @@
import com.ruoyi.order.mapper.TChargingBillMapper;
import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.service.TChargingBillService;
import com.ruoyi.order.service.TChargingOrderRefundService;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.springframework.stereotype.Service;
@@ -63,8 +65,17 @@
    private AppUserClient appUserClient;
    @Resource
    private AppUserCarClient appUserCarClient;
    @Resource
    private TChargingOrderRefundService chargingOrderRefundService;
    @Override
    public ChargingBillVO chargingBillList1(ChargingListQuery dto) {
        if (dto.getState()!=null){
            if (dto.getState()==1){
                dto.setState(2);
            }else {
                dto.setState(1);
            }
        }
        ChargingBillVO chargingBillVO = new ChargingBillVO();
        String startTime1 = null;
        String startTime2 = null;
@@ -206,27 +217,28 @@
                    if (data5.getTime_remaining()!=null){
                        chargingSecond+=data5.getTime_remaining()*60;
                    }
                    Integer cumulativeChargingTime = data5.getCumulative_charging_time();
                    // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟
                    if (cumulativeChargingTime!=null){
                        // 计算小时、分钟和秒
                        int hours = cumulativeChargingTime / 60;
                        int minutes = cumulativeChargingTime % 60;
                        int seconds = 0; // 如果没有秒数,则默认是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());
                }
                Integer cumulativeChargingTime = data5.getCumulative_charging_time();
                // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟
                if (cumulativeChargingTime!=null){
                    // 计算小时、分钟和秒
                    int hours = cumulativeChargingTime / 60;
                    int minutes = cumulativeChargingTime % 60;
                    int seconds = 0; // 如果没有秒数,则默认是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 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData();
                if (tChargingOrder.getAppUserCarId()!=null){
                    List<TAppUserCar> data4 = appUserCarClient.getCarByIds(Arrays.asList(tChargingOrder.getAppUserCarId())).getData();
@@ -236,11 +248,11 @@
                    }
                }
                if (data3!=null)tChargingOrder.setUserName(data3.getName());
                // 累加实收金额 支付金额减去退款金额
                if (tChargingOrder.getPaymentAmount()!=null){
                    paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
                // 累加实收金额 支付结算金额
                if (tChargingOrder.getOrderAmount()!=null){
                    paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
                }
                // 累加订单金额
                // 入账金额
                if (tChargingOrder.getOrderAmount()!=null){
                    orderAmount = orderAmount.add(tChargingOrder.getOrderAmount());
                }
@@ -248,17 +260,18 @@
                if (tChargingOrder.getElectrovalence()!=null){
                    electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
                }
                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null && tChargingOrder.getRefundStatus()== 2){
                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
                List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2)
                        .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list();
                for (TChargingOrderRefund tChargingOrderRefund : list2) {
                    refundAmount = refundAmount.add(tChargingOrderRefund.getRefundTotalAmount());
                }
                // 累加累计服务费
                if (tChargingOrder.getServiceCharge()!=null){
                    serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
                }
                // 累加平台手续费
                if (tChargingOrder.getServiceCharge()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(BigDecimal.valueOf(0.006))
                            .setScale(2,RoundingMode.HALF_DOWN));
                if (tChargingOrder.getOrderAmount()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006)));
                }
                // 累加平台分佣
                if (tChargingOrder.getSharingAmount()!=null){
@@ -285,11 +298,11 @@
                    .subtract(chargingBillVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillVO.getCommissionAmount())
                    .subtract(chargingBillVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillVO.getSharingAmount()));
            chargingBillListVO.setPaymentAmount(paymentAmount == null?BigDecimal.ZERO:paymentAmount);
            chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount);
            chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:orderAmount);
            chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount.subtract(refundAmount).subtract(commissionAmount).subtract(sharingAmount));
            chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:refundAmount);
            chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence);
            chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge);
            chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount);
            chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
            chargingBillListVO.setSharingAmount(sharingAmount == null?BigDecimal.ZERO:sharingAmount);
            chargingBillListVO.setChargingCapacity(chargingCapacity == null?BigDecimal.ZERO:chargingCapacity);
            chargingBillListVO.setBillMoney(chargingBillListVO.getPaymentAmount().subtract(chargingBillListVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillListVO.getRefundAmount())
@@ -319,8 +332,9 @@
            chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
            chargingBillListVO.setUid(chargingBillListVO.getId().toString());
            // 根据账单的出账时间 查询上个月的充电订单
            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
//            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
            // todo 临时修改为查询昨天的充电订单
            LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1);
            // 账单周期
            chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
            // 获取 LocalDate 对象
@@ -344,8 +358,6 @@
            chargingBillVO.setCategory("");
            chargingBillVO.setExportList(tChargingOrders);
            for (TChargingOrder tChargingOrder : tChargingOrders) {
                // 累加实收金额 支付金额减去退款金额
                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
@@ -360,7 +372,7 @@
                if (tChargingOrder.getElectrovalence()!=null){
                    electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
                }
                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){
                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null&&  tChargingOrder.getRefundStatus()==2){
                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
                }
                // 累加累计服务费
@@ -368,8 +380,8 @@
                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
                }
                // 累加平台手续费
                if (tChargingOrder.getServiceCharge()!=null){
                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")));
                if (tChargingOrder.getOrderAmount()!=null){
                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006")));
                }
                // 累加平台分佣
                if (tChargingOrder.getSharingAmount()!=null){
@@ -390,13 +402,13 @@
            }
        }
        chargingBillVO.setChargingCapacity(chargingCapacityTotal);
        chargingBillVO.setPaymentAmount(paymentAmountTotal);
        chargingBillVO.setOrderAmount(orderAmountTotal);
        chargingBillVO.setElectrovalence(electrovalenceTotal);
        chargingBillVO.setServiceCharge(serviceChargeTotal);
        chargingBillVO.setPaymentAmount(paymentAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setOrderCount(orderCount);
        chargingBillVO.setCommissionAmount(commissionAmountTotal);
        chargingBillVO.setSharingAmount(sharingAmountTotal);
        chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setDiscount(discountTotal);
@@ -406,6 +418,13 @@
    }
    @Override
    public ChargingBillVO chargingBillList(ChargingListQuery dto) {
        if (dto.getState()!=null){
            if (dto.getState()==1){
                dto.setState(2);
            }else {
                dto.setState(1);
            }
        }
        ChargingBillVO chargingBillVO = new ChargingBillVO();
        String startTime1 = null;
        String startTime2 = null;
@@ -485,10 +504,21 @@
            BigDecimal commissionAmount = new BigDecimal("0");
            BigDecimal sharingAmount = new BigDecimal("0");
            BigDecimal chargingCapacity = new BigDecimal("0");
            orderCount+=tChargingOrders.size();
            chargingBillVO.setCategory("");
            chargingBillListVO.setOrderCount(tChargingOrders.size());
            chargingBillVO.setExportList(tChargingOrders);
            for (TChargingOrder tChargingOrder : tChargingOrders) {
                if (tChargingOrder.getRechargePaymentType()!=null && tChargingOrder.getRechargePaymentType()==1){
                    chargingBillListVO.setPayTypeName("微信商户");
                }
                if (tChargingOrder.getRechargePaymentType()!=null && tChargingOrder.getRechargePaymentType()==2){
                    if (StringUtils.hasLength(chargingBillListVO.getPayTypeName())){
                        chargingBillListVO.setPayTypeName("微信商户+支付宝商户");
                    }else{
                        chargingBillListVO.setPayTypeName("支付宝商户");
                    }
                }
                List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData();
                if (!data.isEmpty()){
                    chargingBillVO.setSiteName(data.get(0).getName());
@@ -599,8 +629,8 @@
                serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
                }
                // 累加平台手续费
                if (tChargingOrder.getServiceCharge()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(BigDecimal.valueOf(0.006)).setScale(2,RoundingMode.HALF_DOWN));
                if (tChargingOrder.getOrderAmount()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006)));
                }
                // 累加平台分佣
                if (tChargingOrder.getSharingAmount()!=null){
@@ -623,8 +653,8 @@
            chargingBillListVO.setOrderAmount(orderAmount);
            chargingBillListVO.setElectrovalence(electrovalence);
            chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,RoundingMode.HALF_DOWN));
            chargingBillListVO.setCommissionAmount(commissionAmount);
            chargingBillListVO.setSharingAmount(sharingAmount);
            chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,RoundingMode.HALF_DOWN));
            chargingBillListVO.setSharingAmount(sharingAmount.setScale(2,RoundingMode.HALF_DOWN));
            chargingBillListVO.setChargingCapacity(chargingCapacity);
            switch (chargingBillListVO.getType()){
                case 1:
@@ -676,7 +706,7 @@
                eq.eq("site_id", chargingBillListVO.getSiteId());
            }
            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
            int chargingSecond = 0;
            orderCount+=tChargingOrders.size();
            BigDecimal paymentAmount = new BigDecimal("0");
            BigDecimal orderAmount = new BigDecimal("0");
            BigDecimal electrovalence = new BigDecimal("0");
@@ -684,7 +714,7 @@
            BigDecimal commissionAmount = new BigDecimal("0");
            BigDecimal sharingAmount = new BigDecimal("0");
            BigDecimal chargingCapacity = new BigDecimal("0");
            orderCount+=tChargingOrders.size();
            chargingBillListVO.setOrderCount(tChargingOrders.size());
            for (TChargingOrder tChargingOrder : tChargingOrders) {
                // 累加实收金额 支付金额减去退款金额
                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
@@ -714,9 +744,9 @@
                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
                }
                // 累加平台手续费
                if (tChargingOrder.getServiceCharge()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")).setScale(2, RoundingMode.HALF_DOWN));
                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.006")).setScale(2, RoundingMode.HALF_DOWN));
                if (tChargingOrder.getOrderAmount()!=null){
                    commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006")));
                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006")));
                }
                // 累加平台分佣
                if (tChargingOrder.getSharingAmount()!=null){
@@ -738,14 +768,14 @@
            }
        }
        chargingBillVO.setChargingCapacity(chargingCapacityTotal);
        chargingBillVO.setPaymentAmount(paymentAmountTotal);
        chargingBillVO.setOrderAmount(orderAmountTotal);
        chargingBillVO.setElectrovalence(electrovalenceTotal);
        chargingBillVO.setServiceCharge(serviceChargeTotal);
        chargingBillVO.setPaymentAmount(paymentAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setOrderCount(orderCount);
        chargingBillVO.setCommissionAmount(commissionAmountTotal);
        chargingBillVO.setSharingAmount(sharingAmountTotal);
        chargingBillVO.setDiscount(discountTotal);
        chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
        chargingBillVO.setDiscount(discountTotal.setScale(2, RoundingMode.HALF_DOWN));
        pageInfo.setRecords(list);
        chargingBillVO.setList(pageInfo);
        return chargingBillVO;