longz
2026-07-18 9c3aae72bb1faf4cedcc8f91b5a53f0bf2c4f91a
订单列表优化
8个文件已修改
306 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -58,6 +58,11 @@
            }
            @Override
            public R<List<TChargingGun>> getChargingGunByIds(List<Integer> ids) {
                return R.fail("根据ids获取充电枪失败:" + throwable.getMessage());
            }
            @Override
            public R<SiteNameVO> getAllInfoById(Integer id) {
                return R.fail("通过枪id获取站点、桩、枪的名称失败:" + throwable.getMessage());
            }
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -55,6 +55,9 @@
     */
    @PostMapping("/t-charging-gun/getChargingGunById/{id}")
    R<TChargingGun> getChargingGunById(@PathVariable("id") Integer id);
    @PostMapping("/t-charging-gun/getChargingGunByIds")
    R<List<TChargingGun>> getChargingGunByIds(@RequestBody List<Integer> ids);
    
    /**
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -315,6 +315,14 @@
        TChargingGun chargingGun = chargingGunService.getById(id);
        return R.ok(chargingGun);
    }
    @PostMapping(value = "/getChargingGunByIds")
    public R<List<TChargingGun>> getChargingGunByIds(@RequestBody List<Integer> ids){
        if(ids == null || ids.isEmpty()){
            return R.ok(new ArrayList<>());
        }
        return R.ok(chargingGunService.listByIds(ids));
    }
    /**
     * 根据id获取充电枪详情
     * @param id
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -707,6 +707,24 @@
        return AjaxResult.success(res);
    }
    @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/chargingOrder/list")
    @ApiOperation(value = "充电桩订单分页列表", tags = {"管理后台-订单管理"})
    public AjaxResult<PageInfo<ChargingOrderVO>> chargingOrderList(@RequestBody ChargingOrderQuery dto) {
        PageInfo<ChargingOrderVO> res = chargingOrderService.chargingOrderList(dto);
        return AjaxResult.success(res);
    }
    @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
    @ResponseBody
    @PostMapping(value = "/chargingOrder/summary")
    @ApiOperation(value = "充电桩订单汇总", tags = {"管理后台-订单管理"})
    public AjaxResult<TCharingOrderVO> chargingOrderSummary(@RequestBody ChargingOrderQuery dto) {
        TCharingOrderVO res = chargingOrderService.chargingOrderSummary(dto);
        return AjaxResult.success(res);
    }
    @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
    @ResponseBody
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -59,6 +59,7 @@
                                            @Param("pageCurr") Integer pageCurr, @Param("pageSize") Integer pageSize);
    List<ChargingOrderVO> chargingOrder(@Param("pageInfo") PageInfo<ChargingOrderVO> pageInfo, @Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
    Map<String, Object> chargingOrderBaseSummary(@Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
    Map<String, Object> chargingOrderNolimit( @Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
    Map<String, Object> chargingOrderFundSummary(@Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
    List<Long> chargingOrderSummaryOrderIds(@Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -163,6 +163,10 @@
    TCharingOrderVO chargingOrder(ChargingOrderQuery dto);
    PageInfo<ChargingOrderVO> chargingOrderList(ChargingOrderQuery dto);
    TCharingOrderVO chargingOrderSummary(ChargingOrderQuery dto);
    List<ChargingOrderBalanceIncomeDetailVO> balanceIncomeDetail(ChargingOrderQuery dto);
    R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2548,17 +2548,84 @@
    
    @Override
    public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
        TCharingOrderVO summary = chargingOrderSummary(dto);
        summary.setList(chargingOrderList(dto));
        return summary;
    }
    @Override
    public PageInfo<ChargingOrderVO> chargingOrderList(ChargingOrderQuery dto) {
        String[] timeRange = parseChargingOrderTimeRange(dto);
        String startTime1 = timeRange[0];
        String startTime2 = timeRange[1];
        String endTime1 = timeRange[2];
        String endTime2 = timeRange[3];
        PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
        if (StringUtils.hasLength(dto.getPhone())) {
            List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
            if (data == null || data.isEmpty()) {
                return pageInfo;
            }
            dto.setUserIds(data);
        }
        Long userId = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userId).getData();
        Integer roleType = sysUser.getRoleType();
        setChargingOrderAuthSiteIds(dto, sysUser, userId, roleType);
        List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
        fillChargingOrderBalanceIncome(list);
        fillChargingOrderShareIncome(list);
        fillChargingOrderPageExtra(list, dto.getSiteIds(), sysUser, roleType);
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public TCharingOrderVO chargingOrderSummary(ChargingOrderQuery dto) {
        TCharingOrderVO tCharingOrderVO = new TCharingOrderVO();
        List<TChargingGun> allGun = chargingGunClient.getAllGun().getData();
        List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
        List<Site> data9 = siteClient.getSiteAll().getData();
        List<TAppUser> data6 = appUserClient.getAllUser().getData();
        List<TAppUserCar> data4 = appUserCarClient.getAllCar().getData();
        fillEmptyChargingOrderSummary(tCharingOrderVO);
        String[] timeRange = parseChargingOrderTimeRange(dto);
        String startTime1 = timeRange[0];
        String startTime2 = timeRange[1];
        String endTime1 = timeRange[2];
        String endTime2 = timeRange[3];
        if (StringUtils.hasLength(dto.getPhone())) {
            List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
            if (data == null || data.isEmpty()) {
                return tCharingOrderVO;
            }
            dto.setUserIds(data);
        }
        Long userId = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userId).getData();
        setChargingOrderAuthSiteIds(dto, sysUser, userId, sysUser.getRoleType());
        Map<String, Object> map = this.baseMapper.chargingOrderBaseSummary(dto, startTime1, startTime2, endTime1, endTime2);
        if (null != map) {
            tCharingOrderVO.setTotal(getSummaryDecimal(map, "total"));
            tCharingOrderVO.setTime(getSummaryLong(map, "time"));
            tCharingOrderVO.setIncome(getSummaryDecimal(map, "income"));
            tCharingOrderVO.setElectronicMoney(getSummaryDecimal(map, "electronicMoney"));
            tCharingOrderVO.setServiceMoney(getSummaryDecimal(map, "serviceMoney"));
            tCharingOrderVO.setWechatIncome(getSummaryDecimal(map, "wechatIncome"));
            tCharingOrderVO.setAlipayIncome(getSummaryDecimal(map, "alipayIncome"));
            tCharingOrderVO.setWhitelistChargingIncome(getSummaryDecimal(map, "whitelistChargingIncome"));
            tCharingOrderVO.setWhitelistRefund(getSummaryDecimal(map, "whitelistRefund"));
        }
        List<Long> summaryOrderIds = this.baseMapper.chargingOrderSummaryOrderIds(dto, startTime1, startTime2, endTime1, endTime2);
        Map<String, Object> shareIncomeMap = getChargingOrderShareIncomeSummary(summaryOrderIds);
        tCharingOrderVO.setPlatformIncomeTotal(getSummaryDecimal(shareIncomeMap, "platformIncomeTotal"));
        tCharingOrderVO.setPartnerIncomeTotal(getSummaryDecimal(shareIncomeMap, "partnerIncomeTotal"));
        Map<String, Object> balanceMap = getExchangeCodeBalanceSummary(summaryOrderIds);
        tCharingOrderVO.setBalanceIncome(getSummaryDecimal(balanceMap, "balanceIncome"));
        tCharingOrderVO.setBalanceGiftIncome(getSummaryDecimal(balanceMap, "balanceGiftIncome"));
        return tCharingOrderVO;
    }
    private String[] parseChargingOrderTimeRange(ChargingOrderQuery dto) {
        String startTime1 = null;
        String startTime2 = null;
        String endTime1 = null;
        String endTime2 = null;
        if (StringUtils.hasLength(dto.getStartTime())) {
            String[] split = dto.getStartTime().split(" - ");
            startTime1 = split[0];
@@ -2569,115 +2636,76 @@
            endTime1 = split[0];
            endTime2 = split[1];
        }
        PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
        if (StringUtils.hasLength(dto.getPhone())) {
            List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
            if (data.isEmpty()) {
                tCharingOrderVO.setList(pageInfo);
                return tCharingOrderVO;
            }
            dto.setUserIds(data);
        return new String[]{startTime1, startTime2, endTime1, endTime2};
    }
    private void fillChargingOrderPageExtra(List<ChargingOrderVO> list, List<Integer> siteIds, SysUser sysUser, Integer roleType) {
        if (list == null || list.isEmpty()) {
            return;
        }
        Long userId = tokenService.getLoginUser().getUserid();
        // 查询当前登陆人按钮权限
        SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
        Integer roleType = sysUser.getRoleType();
            setChargingOrderAuthSiteIds(dto, sysUser, userId, roleType);
            List<Integer> siteIds = dto.getSiteIds();
            List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
            fillChargingOrderBalanceIncome(list);
            fillChargingOrderShareIncome(list);
            List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
        List<Long> orderIds = list.stream().map(ChargingOrderVO::getId).filter(Objects::nonNull).collect(Collectors.toList());
        List<Integer> pageSiteIds = list.stream().map(ChargingOrderVO::getSiteId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
        List<Integer> pageGunIds = list.stream().map(ChargingOrderVO::getChargingGunId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
        List<TChargingGun> pageGuns = pageGunIds.isEmpty() ? new ArrayList<>() : Optional.ofNullable(chargingGunClient.getChargingGunByIds(pageGunIds).getData()).orElse(new ArrayList<>());
        Map<Integer, TChargingGun> gunMap = pageGuns.stream()
                .filter(item -> item.getId() != null)
                .collect(Collectors.toMap(TChargingGun::getId, item -> item, (a, b) -> a));
        List<TChargingPile> pagePiles = pageSiteIds.isEmpty() ? new ArrayList<>() : Optional.ofNullable(chargingPileClient.getChargingPileBySiteIds(pageSiteIds).getData()).orElse(new ArrayList<>());
        Map<Integer, TChargingPile> pileMap = pagePiles.stream()
                .filter(item -> item.getId() != null)
                .collect(Collectors.toMap(TChargingPile::getId, item -> item, (a, b) -> a));
        List<Site> pageSites = pageSiteIds.isEmpty() ? new ArrayList<>() : Optional.ofNullable(siteClient.getSiteByIds(pageSiteIds).getData()).orElse(new ArrayList<>());
        Map<Integer, Site> siteMap = pageSites.stream()
                .filter(item -> item.getId() != null)
                .collect(Collectors.toMap(Site::getId, item -> item, (a, b) -> a));
        Map<Long, List<TChargingOrderAccountingStrategy>> strategyMap = orderIds.isEmpty() ? new HashMap<>() :
                chargingOrderAccountingStrategyService.lambdaQuery()
                        .in(TChargingOrderAccountingStrategy::getChargingOrderId, orderIds)
                        .list()
                        .stream()
                        .collect(Collectors.groupingBy(TChargingOrderAccountingStrategy::getChargingOrderId));
        Map<Integer, Boolean> authRecordMap = new HashMap<>();
        if (roleType == 2 && siteIds != null) {
            for (Integer siteId : siteIds) {
                List<Boolean> permission = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
                authRecordMap.put(siteId, permission != null && !permission.isEmpty() && Boolean.TRUE.equals(permission.get(0)));
            }
        }
        for (ChargingOrderVO chargingOrderVO : list) {
            if (roleType == 2) {
                for (Integer siteId : siteIds) {
                    // 校验有没有这个站点的权限
                    List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
                    chargingOrderVO.setAuthRecord(t1.get(0));
                }
            if (roleType == 2 && chargingOrderVO.getSiteId() != null) {
                chargingOrderVO.setAuthRecord(Boolean.TRUE.equals(authRecordMap.get(chargingOrderVO.getSiteId())));
            }
            chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")) : new BigDecimal("0"));
            chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0"));
            chargingOrderVO.setUid(chargingOrderVO.getId() + "");
            TChargingGun data3 = allGun.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null);
            TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null);
            if (chargingOrderVO.getSiteId() != null) {
                List<Integer> integers = new ArrayList<>();
                integers.add(chargingOrderVO.getSiteId());
                Site site = data9.stream().filter(e -> e.getId().equals(chargingOrderVO.getSiteId())).findFirst().orElse(null);
                if (site != null) chargingOrderVO.setSiteName(site.getName());
            Site site = siteMap.get(chargingOrderVO.getSiteId());
            if (site != null) {
                chargingOrderVO.setSiteName(site.getName());
            }
            if (data2 != null && data3 != null) {
                chargingOrderVO.setTerminalName(data2.getName() + "-" + data3.getName());
            TChargingGun gun = gunMap.get(chargingOrderVO.getChargingGunId());
            TChargingPile pile = pileMap.get(chargingOrderVO.getChargingPileId());
            if (pile != null && gun != null) {
                chargingOrderVO.setTerminalName(pile.getName() + "-" + gun.getName());
            }
            // 充电订单 明细记录
            List<TChargingOrderAccountingStrategy> chargingOrderId = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
            List<TChargingOrderAccountingStrategy> strategies = strategyMap.getOrDefault(chargingOrderVO.getId(), new ArrayList<>());
            if (chargingOrderVO.getStartTime() != null && chargingOrderVO.getEndTime() != null) {
                LocalDateTime startTime = chargingOrderVO.getStartTime();
                LocalDateTime endTime = chargingOrderVO.getEndTime();
                // 计算时间差 单位秒
                long between = ChronoUnit.SECONDS.between(startTime, endTime);
                long between = ChronoUnit.SECONDS.between(chargingOrderVO.getStartTime(), chargingOrderVO.getEndTime());
                chargingOrderVO.setChargingSecond(between);
                BigDecimal electronic_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
                chargingOrderVO.setElectrovalence(electronic_reduce);
                BigDecimal service_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
                if (!chargingOrderVO.getOrderSource().equals(2)) {
                    chargingOrderVO.setServiceCharge(service_reduce);
                BigDecimal electronicReduce = strategies.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
                chargingOrderVO.setElectrovalence(electronicReduce);
                BigDecimal serviceReduce = strategies.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
                if (!Objects.equals(chargingOrderVO.getOrderSource(), 2)) {
                    chargingOrderVO.setServiceCharge(serviceReduce);
                    chargingOrderVO.setSharingAmount(BigDecimal.ZERO);
                } else {
                    chargingOrderVO.setServiceCharge(service_reduce.multiply(new BigDecimal("0.8")));
                    chargingOrderVO.setSharingAmount(service_reduce.multiply(new BigDecimal("0.2")));
                    chargingOrderVO.setServiceCharge(serviceReduce.multiply(new BigDecimal("0.8")));
                    chargingOrderVO.setSharingAmount(serviceReduce.multiply(new BigDecimal("0.2")));
                }
            }
            // 充电时段数
            int size = chargingOrderId.size();
            chargingOrderVO.setCount(size);
            // 用户手机号
            TAppUser data = data6.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserId())).findFirst().orElse(null);
            if (data != null) {
                // 车牌号
                chargingOrderVO.setPhone(data.getPhone());
                List<Long> longs = new ArrayList<>();
                if (chargingOrderVO.getAppUserCarId() != null) {
                    longs.add(chargingOrderVO.getAppUserCarId());
                    TAppUserCar tAppUserCar = data4.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserCarId())).findFirst().orElse(null);
                    if (tAppUserCar != null) {
                        chargingOrderVO.setLicensePlate(tAppUserCar.getLicensePlate());
                    }
                } else {
                    chargingOrderVO.setLicensePlate(chargingOrderVO.getPlateNum());
                }
            }
            chargingOrderVO.setCount(strategies.size());
            chargingOrderVO.setLicensePlate(chargingOrderVO.getPlateNum());
        }
        fillEmptyChargingOrderSummary(tCharingOrderVO);
        Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2);
        if (null != map) {
            tCharingOrderVO.setTotal(getSummaryDecimal(map, "total"));
            tCharingOrderVO.setTime(getSummaryLong(map, "time"));
            tCharingOrderVO.setIncome(getSummaryDecimal(map, "income"));
            tCharingOrderVO.setElectronicMoney(getSummaryDecimal(map, "electronicMoney"));
            tCharingOrderVO.setServiceMoney(getSummaryDecimal(map, "serviceMoney"));
        }
        Map<String, Object> fundMap = this.baseMapper.chargingOrderFundSummary(dto, startTime1, startTime2, endTime1, endTime2);
        if (null != fundMap) {
            tCharingOrderVO.setWechatIncome(getSummaryDecimal(fundMap, "wechatIncome"));
            tCharingOrderVO.setAlipayIncome(getSummaryDecimal(fundMap, "alipayIncome"));
            tCharingOrderVO.setWhitelistChargingIncome(getSummaryDecimal(fundMap, "whitelistChargingIncome"));
            tCharingOrderVO.setWhitelistRefund(getSummaryDecimal(fundMap, "whitelistRefund"));
        }
        Map<String, Object> shareIncomeMap = getChargingOrderShareIncomeSummary(dto, startTime1, startTime2, endTime1, endTime2);
        tCharingOrderVO.setPlatformIncomeTotal(getSummaryDecimal(shareIncomeMap, "platformIncomeTotal"));
        tCharingOrderVO.setPartnerIncomeTotal(getSummaryDecimal(shareIncomeMap, "partnerIncomeTotal"));
        Map<String, Object> balanceMap = getExchangeCodeBalanceSummary(dto, startTime1, startTime2, endTime1, endTime2);
        tCharingOrderVO.setBalanceIncome(getSummaryDecimal(balanceMap, "balanceIncome"));
        tCharingOrderVO.setBalanceGiftIncome(getSummaryDecimal(balanceMap, "balanceGiftIncome"));
        pageInfo.setRecords(list);
        tCharingOrderVO.setList(pageInfo);
            return tCharingOrderVO;
        }
    }
        /**
         * 填充充电桩订单列表余额收入,余额收入按真实充值余额统计,赠送余额单独展示。
@@ -2827,11 +2855,10 @@
    /**
     * 汇总充电桩订单余额收入,兑换码使用记录的usedAmount包含赠送余额,SQL中需扣除giftUsedAmount。
     */
    private Map<String, Object> getExchangeCodeBalanceSummary(ChargingOrderQuery dto, String startTime1, String startTime2, String endTime1, String endTime2) {
    private Map<String, Object> getExchangeCodeBalanceSummary(List<Long> orderIds) {
        Map<String, Object> totalMap = new HashMap<>();
        totalMap.put("balanceIncome", BigDecimal.ZERO);
        totalMap.put("balanceGiftIncome", BigDecimal.ZERO);
        List<Long> orderIds = this.baseMapper.chargingOrderSummaryOrderIds(dto, startTime1, startTime2, endTime1, endTime2);
        if (orderIds == null || orderIds.isEmpty()) {
            return totalMap;
        }
@@ -2851,11 +2878,10 @@
        return totalMap;
    }
    private Map<String, Object> getChargingOrderShareIncomeSummary(ChargingOrderQuery dto, String startTime1, String startTime2, String endTime1, String endTime2) {
    private Map<String, Object> getChargingOrderShareIncomeSummary(List<Long> orderIds) {
        Map<String, Object> totalMap = new HashMap<>();
        totalMap.put("platformIncomeTotal", BigDecimal.ZERO);
        totalMap.put("partnerIncomeTotal", BigDecimal.ZERO);
        List<Long> orderIds = this.baseMapper.chargingOrderSummaryOrderIds(dto, startTime1, startTime2, endTime1, endTime2);
        if (orderIds == null || orderIds.isEmpty()) {
            return totalMap;
        }
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -2266,6 +2266,39 @@
        </if>
    </sql>
    <select id="chargingOrderBaseSummary" resultType="map">
        select
        sum(aa.time) as `time`,
        sum(aa.income) as income,
        sum(aa.electronicMoney) as electronicMoney,
        sum(aa.serviceMoney) as serviceMoney,
        sum(aa.total) as total,
        sum(CASE WHEN aa.recharge_payment_type = 1 and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as wechatIncome,
        sum(CASE WHEN aa.recharge_payment_type in (2, 3) and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as alipayIncome,
        sum(CASE WHEN aa.is_whitelist = 1 THEN IFNULL(aa.electrovalence, 0) + IFNULL(aa.serviceCharge, 0) ELSE 0 END) as whitelistChargingIncome,
        sum(CASE WHEN aa.is_whitelist = 1 THEN IFNULL(aa.whitelist_electric_refund_amount, 0) + IFNULL(aa.whitelist_service_refund_amount, 0) ELSE 0 END) as whitelistRefund
        from (
            select
            b.id,
            CASE WHEN count(a.id) > 0 THEN (UNIX_TIMESTAMP(MAX(b.end_time)) - UNIX_TIMESTAMP(MAX(b.start_time))) ELSE 0 END as time,
            sum(a.charging_capacity) as total,
            sum(a.period_electric_price) as electronicMoney,
            sum(CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END) as serviceMoney,
            sum(a.period_electric_price + (CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END)) as income,
            MAX(b.recharge_payment_type) as recharge_payment_type,
            MAX(b.is_whitelist) as is_whitelist,
            MAX(b.electrovalence) as electrovalence,
            MAX(b.service_charge) as serviceCharge,
            MAX(b.whitelist_electric_refund_amount) as whitelist_electric_refund_amount,
            MAX(b.whitelist_service_refund_amount) as whitelist_service_refund_amount,
            MAX(IFNULL(b.third_pay_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.payment_amount, IFNULL(b.recharge_amount, 0)) ELSE 0 END) - IFNULL(b.third_refund_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.refund_amount, 0) ELSE 0 END)) as thirdNetAmount
            from `charging_pile_order`.t_charging_order b
            left join `charging_pile_order`.t_charging_order_accounting_strategy a on a.charging_order_id = b.id
            <include refid="ChargingOrderSummaryWhere"/>
            group by b.id,b.end_time,b.start_time,b.order_source
        ) as aa
    </select>
    <select id="chargingOrderNolimit" resultType="map">
        select
        sum(aa.time) as `time`,