puzhibing
2026-05-22 6912e074af61b73307d2fc31b1b8f4974f5eb4f3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -3,6 +3,7 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.account.api.feignClient.AppUserCarClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.TAppUser;
@@ -85,9 +86,7 @@
    private AccountingStrategyOrderService accountingStrategyOrderService;
    @Resource
    private TChargingOrderAccountingStrategyService tChargingOrderAccountingStrategyService;
    @Resource
    private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
    
    
    @RequiresPermissions(value = {"/chargingPeriodStatistics"}, logical = Logical.OR)
@@ -111,17 +110,16 @@
    @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"})
    @PutMapping("/export")
    public void export(@RequestBody ChargingListQuery dto) {
        ChargingOrderTimeVO res = chargingOrderService.chargingList(dto);
        List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>();
        List<ChargingOrderListVO> exportList = res.getExportList();
        List<ChargingOrderListVO> exportList = chargingOrderService.export(dto);
        int i = 1;
        List<TChargingGun> data = chargingGunClient.getAllGun().getData();
        List<Site> data9 = siteClient.getSiteAll().getData();
        List<TAppUser> data6 = appUserClient.getAllUser().getData();
        List<Partner> data7 = siteClient.getAllPartner().getData();
        List<AccountingStrategyOrder> listAll = accountingStrategyOrderService.lambdaQuery()
                .list();
        List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list();
//        List<Long> collect = exportList.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
//        List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
//                .in("charging_order_id", collect));
        List<TVip> data5 = vipClient.getAllVip().getData();
        List<TAppUserCar> data8 = appUserCarClient.getAllCar().getData();
        for (ChargingOrderListVO chargingOrderListVO : exportList) {
@@ -146,13 +144,7 @@
            tChargingOrderExport.setId(i);
            tChargingOrderExport.setCode(chargingOrderListVO.getCode());
            tChargingOrderExport.setTerminalName(chargingOrderListVO.getTerminalName());
            // 查询这笔订单的计费策略名称
            List<AccountingStrategyOrder> list = listAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
            if (!list.isEmpty()){
                tChargingOrderExport.setName(list.get(0).getName());
            }
            tChargingOrderExport.setName(chargingOrderListVO.getAccountingStrategyName());
            tChargingOrderExport.setOrderClassification("1");
            tChargingOrderExport.setStartType("扫码");
            tChargingOrderExport.setOne("小程序");
@@ -180,6 +172,9 @@
                }
            }
            tChargingOrderExport.setPaymentMethod(getPaymentMethod(chargingOrderListVO));
            tChargingOrderExport.setCashPayAmount(formatMoney(getCashPayAmount(chargingOrderListVO)));
            tChargingOrderExport.setBalancePayAmount(formatMoney(getBalancePayAmount(chargingOrderListVO)));
            if (chargingOrderListVO.getCreateTime()!=null){
                String s1 = DateUtils.localDateTimeToString(chargingOrderListVO.getCreateTime());
                tChargingOrderExport.setCreateTime(s1);
@@ -202,35 +197,31 @@
            tChargingOrderExport.setServiceCharge(chargingOrderListVO.getServiceCharge()+"");
            tChargingOrderExport.setTotal(chargingOrderListVO.getPaymentAmount()+"");
            tChargingOrderExport.setChargingCapacity(chargingOrderListVO.getElectricity()+"");
            List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
            if (!stageCost.isEmpty()){
                // 累加时段电费单价 取平均值
                BigDecimal bigDecimal1 = new BigDecimal("0");
                BigDecimal bigDecimal2 = new BigDecimal("0");
                BigDecimal bigDecimal3 = new BigDecimal("0");
                BigDecimal size = new BigDecimal(stageCost.size());
                for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) {
                    bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice());
                    bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice());
                    bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
                }
                BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN);
                BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN);
                BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN);
                tChargingOrderExport.setElectrovalencePrice(divide1+"");
                tChargingOrderExport.setServiceChargePrice(divide2+"");
                tChargingOrderExport.setServiceChargePriceLook(divide3+"");
            }
            if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){
                LocalDateTime startTime = chargingOrderListVO.getStartTime();
                LocalDateTime endTime = chargingOrderListVO.getEndTime();
                // 计算时间差 单位秒
                long between = ChronoUnit.SECONDS.between(startTime, endTime);
                tChargingOrderExport.setCumulativeChargingTime((between*60)+"");
            }
            tChargingOrderExport.setRechargeAmount(chargingOrderListVO.getRechargeAmount().toString());
            tChargingOrderExport.setRefundAmount(chargingOrderListVO.getRefundAmount().toString());
//            List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
//            if (!stageCost.isEmpty()){
//                // 累加时段电费单价 取平均值
//                BigDecimal bigDecimal1 = new BigDecimal("0");
//                BigDecimal bigDecimal2 = new BigDecimal("0");
//                BigDecimal bigDecimal3 = new BigDecimal("0");
//                BigDecimal size = new BigDecimal(stageCost.size());
//
//                for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) {
//                    bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice());
//                    bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice());
//                    bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
//                }
//                BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN);
//                BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN);
//                BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN);
//                tChargingOrderExport.setElectrovalencePrice(divide1+"");
//                tChargingOrderExport.setServiceChargePrice(divide2+"");
//                tChargingOrderExport.setServiceChargePriceLook(divide3+"");
//            }
            tChargingOrderExport.setElectrovalencePrice("");
            tChargingOrderExport.setServiceChargePrice("");
            tChargingOrderExport.setServiceChargePriceLook("");
            tChargingOrderExport.setCumulativeChargingTime(chargingOrderListVO.getChargingSecond() + "");
            tChargingOrderExport.setRefundAmount(null != chargingOrderListVO.getRefundAmount() ? chargingOrderListVO.getRefundAmount().toString() : "");
            tChargingOrderExport.setStartSoc(chargingOrderListVO.getStartSoc());
            tChargingOrderExport.setEndtSoc(chargingOrderListVO.getEndSoc());
            tChargingOrderExport.setIsSoc("否");
@@ -256,21 +247,18 @@
            TAppUserCar tAppUserCar = data8.stream().filter(e -> e.getId().equals(chargingOrderListVO.getAppUserId())).findFirst().orElse(null);
            if (tAppUserCar!=null){
                tChargingOrderExport.setCarNumber(tAppUserCar.getLicensePlate());
                tChargingOrderExport.setCarType(tAppUserCar.getVehicleModel());
                tChargingOrderExport.setCarBrand(tAppUserCar.getVehicleBrand());
            }
            tChargingOrderExport.setBalanceIncome(formatMoney(chargingOrderListVO.getBalanceIncome()));
            tChargingOrderExport.setBalanceGiftIncome(formatMoney(chargingOrderListVO.getBalanceGiftIncome()));
            tChargingOrderExport.setTripartiteCommission(formatMoney(chargingOrderListVO.getSharingAmount()));
            tChargingOrderExport.setOrderCode(chargingOrderListVO.getStartChargeSeq());
            tChargingOrderExport.setIsSingle("是");
            tChargingOrderExport.setPayTime(chargingOrderListVO.getPayTime()+"");
            tChargingOrderExport.setElectrovalenceSiteName("四川明星新能源科技有限公司");
            tChargingOrderExport.setCompanyNameAdmin("四川明星新能源科技有限公司");
            tChargingOrderExport.setMoneyType("线上计费");
            tChargingOrderExport.setDeviceType("设备直连(自由集控)");
            tChargingOrderExport.setSettlementCompanyName("四川明星新能源科技有限公司");
            tChargingOrderExport.setPrePaymentType("先付后退");
            tChargingOrderExport.setIsSecurity("是");
            tChargingOrderExport.setSharingAmount(formatMoney(chargingOrderListVO.getSharingAmount()));
            tChargingOrderExport.setIsWhitelist(Integer.valueOf(1).equals(chargingOrderListVO.getIsWhitelist()) ? "是" : "否");
            tChargingOrderExport.setWhitelistElectricRefundAmount(formatMoney(chargingOrderListVO.getWhitelistElectricRefundAmount()));
            tChargingOrderExport.setWhitelistServiceRefundAmount(formatMoney(chargingOrderListVO.getWhitelistServiceRefundAmount()));
            tChargingOrderExports.add(tChargingOrderExport);
            i++;
        }
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingOrderExport.class, tChargingOrderExports);
        HttpServletResponse response = WebUtils.response();
@@ -294,6 +282,59 @@
                e.printStackTrace();
            }
        }
    }
    private String getPaymentMethod(ChargingOrderListVO chargingOrderListVO) {
        Integer payMethod = chargingOrderListVO.getPayMethod();
        String thirdPayName = getThirdPayName(chargingOrderListVO.getRechargePaymentType());
        if (Integer.valueOf(1).equals(payMethod)) {
            return "余额支付";
        }
        if (Integer.valueOf(2).equals(payMethod)) {
            return thirdPayName.isEmpty() ? "余额支付" : "余额支付+" + thirdPayName;
        }
        if (Integer.valueOf(3).equals(payMethod)) {
            return thirdPayName;
        }
        return thirdPayName;
    }
    private String getThirdPayName(Integer rechargePaymentType) {
        if (Integer.valueOf(1).equals(rechargePaymentType)) {
            return "微信支付";
        }
        if (Integer.valueOf(2).equals(rechargePaymentType) || Integer.valueOf(3).equals(rechargePaymentType)) {
            return "支付宝支付";
        }
        return "";
    }
    private BigDecimal getCashPayAmount(ChargingOrderListVO chargingOrderListVO) {
        if (chargingOrderListVO.getThirdPayAmount() != null) {
            return chargingOrderListVO.getThirdPayAmount();
        }
        if (Integer.valueOf(3).equals(chargingOrderListVO.getPayMethod())) {
            return nullToZero(chargingOrderListVO.getPaymentAmount());
        }
        return BigDecimal.ZERO;
    }
    private BigDecimal getBalancePayAmount(ChargingOrderListVO chargingOrderListVO) {
        if (chargingOrderListVO.getBalancePayAmount() != null) {
            return chargingOrderListVO.getBalancePayAmount();
        }
        if (Integer.valueOf(1).equals(chargingOrderListVO.getPayMethod())) {
            return nullToZero(chargingOrderListVO.getPaymentAmount());
        }
        return BigDecimal.ZERO;
    }
    private BigDecimal nullToZero(BigDecimal amount) {
        return amount == null ? BigDecimal.ZERO : amount;
    }
    private String formatMoney(BigDecimal amount) {
        return nullToZero(amount).setScale(2, RoundingMode.HALF_UP).toPlainString();
    }
    
    
@@ -367,4 +408,3 @@
    }
}