Pu Zhibing
2025-03-19 cf32754f130955a617836cae7685c1a24979060c
修改报表bug
24个文件已修改
584 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
@@ -32,12 +32,12 @@
            @Override
            public R<List<Integer>> getCountByCouponIds(String couponIds) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<Integer> getUseCountByCouponId(Integer couponId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java
@@ -34,7 +34,7 @@
            @Override
            public R<List<TAppUserCar>> getAllCar() {
                return null;
                return R.fail("获取所有车辆失败:"+throwable.getMessage());
            }
            @Override
@@ -49,7 +49,7 @@
            @Override
            public R<List<Long>> getAppUserCarByLicensePlates(String licensePlate) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -48,7 +48,7 @@
            @Override
            public R<List<TAppUser>> getAllUser() {
                return null;
                return R.fail("根据所有用户失败:"+throwable.getMessage());
            }
            @Override
@@ -65,7 +65,7 @@
            @Override
            public R changeDown(PointChangeDto points) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
@@ -85,7 +85,7 @@
            @Override
            public R giveVip(GiveVipDto giveVipDto) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -32,12 +32,12 @@
            @Override
            public R<List<TChargingGun>> getAllGun() {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<TChargingPile>> getAllPile() {
                return null;
                return R.fail("获取所有桩失败:" + throwable.getMessage());
            }
            @Override
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -35,7 +35,7 @@
            @Override
            public R<List<TChargingPile>> getChargingPileBySiteIds(List<Integer> siteIds) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
@@ -48,7 +48,7 @@
            @Override
            public R<BigDecimal> getRecordAmount(String sixBefore) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
    
            @Override
@@ -58,12 +58,12 @@
            @Override
            public R<Integer> getSiteIdByOrderId(Long id) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<TParkingRecord>> getSiteIdAll() {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
@@ -48,42 +48,42 @@
            @Override
            public R<List<Boolean>> getChargingOrderMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> getChargingListMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> getSettlementListMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> getAccountMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> managePageListMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> parkingRecordListMenu(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> watchChargingOrder(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Boolean>> chargeEvaluation(Integer partnerId, Integer siteId) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -46,7 +46,7 @@
            @Override
            public R<List<GetSiteListDTO>> getSiteListByUserId(Long userId) {
                return R.fail("获取数据失败");
                return R.fail("获取数据失败" + throwable.getMessage());
            }
            @Override
@@ -57,7 +57,7 @@
            @Override
            public R<List<Partner>> getAllPartner() {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
@@ -51,7 +51,7 @@
            @Override
            public R delete(String id) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -62,7 +62,7 @@
            @Override
            public R<List<ChargingOrderGroup>> getBySiteIdAndTime(ChargingPercentProvinceDto chargingPercentProvinceDto) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
    
            @Override
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java
@@ -30,7 +30,7 @@
            @Override
            public R<TExchangeOrder> orderDetail(Long orderId) {
                return null;
                return R.fail("获取数据失败:" + cause.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -47,7 +47,7 @@
            @Override
            public R<Integer> getSalesCountByGoodsIdgetCount(Integer goodId, Integer goodeType, Integer buyType) {
                return null;
                return R.fail("获取数据失败:" + cause.getMessage());
            }
@@ -68,7 +68,7 @@
            @Override
            public R<Long> addVipOrder(TVipOrder vipOrder) {
                return null;
                return R.fail("获取数据失败:" + cause.getMessage());
            }
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
@@ -34,7 +34,7 @@
            }
            @Override
            public R<TVip> getInfo(Integer type) {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            @Override
@@ -54,7 +54,7 @@
            @Override
            public R<List<TVip>> getAllVip() {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
@@ -27,7 +27,7 @@
            @Override
            public R<Boolean> saveLog(SysOperLog sysOperLog, String source)
            {
                return null;
                return R.fail("获取数据失败:" + throwable.getMessage());
            }
            
        };
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1063,7 +1063,7 @@
    @ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"})
    public R<Map<String,Object>> total() {
        //count近6个月的数据
        LocalDate sixBefore = PreviousSixMonths.get();
        LocalDateTime sixBefore = LocalDate.now().minusMonths(6).atTime(0, 0, 0);
        Long userId = tokenService.getLoginUser().getUserid();
        //获取当前登录的siteIds
        List<Integer> siteIds = new ArrayList<>();
@@ -1085,21 +1085,32 @@
        map.put("shopAmount",data1);
        BigDecimal data2 =   vipOrderService.getSumAmout(sixBefore);
        map.put("vipAmount",data2);
        List<TChargingOrder> list = chargingOrderService.lambdaQuery().between(TChargingOrder::getCreateTime, sixBefore, LocalDate.now()).list();
        BigDecimal serviceCharge = new BigDecimal("0");
        BigDecimal commissionAmount = new BigDecimal("0");
        for (TChargingOrder chargingOrder : list) {
            if (chargingOrder.getOrderSource().equals(2)){
                serviceCharge = serviceCharge.add(chargingOrder.getServiceCharge()!=null?chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
                commissionAmount = commissionAmount.add(chargingOrder.getServiceCharge()!=null?chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
            }else if (chargingOrder.getServiceCharge()!=null){
                serviceCharge = serviceCharge.add(chargingOrder.getServiceCharge());
        List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getStatus, 5).eq(TChargingOrder::getDelFlag, 0)
                .eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getCreateTime, sixBefore, LocalDateTime.now()).list();
        BigDecimal sharingAmount = BigDecimal.ZERO;
        BigDecimal commissionAmount = BigDecimal.ZERO;
        //计算list中electrovalence的总和
        BigDecimal totalElectrovalence = BigDecimal.ZERO;
        //计算list中serviceCharge的总和
        BigDecimal totalServiceCharge = BigDecimal.ZERO;
        List<TChargingOrderAccountingStrategy> accountingStrategyList = chargingOrderAccountingStrategyService.list();
        for (TChargingOrder order : list) {
            List<TChargingOrderAccountingStrategy> collect = accountingStrategyList.stream().filter(s -> s.getChargingOrderId().equals(order.getId())).collect(Collectors.toList());
            BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            totalElectrovalence = totalElectrovalence.add(periodElectricPrice);
            commissionAmount = commissionAmount.add(order.getRechargeAmount().multiply(new BigDecimal("0.006")));
            if(2 != order.getOrderSource()){
                totalServiceCharge = totalServiceCharge.add(periodServicePrice);
            }else{
                totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
                sharingAmount = sharingAmount.add(periodServicePrice.multiply(new BigDecimal("0.2")));
            }
        }
        map.put("service_charge",serviceCharge);
        map.put("commission_amount",commissionAmount);
        map.put("service_charge",totalServiceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        map.put("electrovalence",totalElectrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        map.put("commission_amount",commissionAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        map.put("sharing_amount",sharingAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        return R.ok(map);
    }
@@ -1248,38 +1259,25 @@
        if (siteIds.isEmpty())siteIds.add(-1);
        TCharingOrderMapVO tCharingOrderMapVO = new TCharingOrderMapVO();
        LocalDate start = null;
        LocalDate end = null;
        if (statisticsQueryDto.getDayType()==1){
            start = LocalDate.now();
            end = LocalDate.now().plusDays(1);
        }else if (statisticsQueryDto.getDayType()==2){
            LocalDate today = LocalDate.now();
            // 获取本周一的日期
            LocalDate mondayThisWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
            start = statisticsQueryDto.getStartTime();
            end = statisticsQueryDto.getEndTime();
            System.out.println("本周一是: " + mondayThisWeek);
        }
        else if (statisticsQueryDto.getDayType()==3){
        } else if (statisticsQueryDto.getDayType()==3){
            // 获取当前日期
            LocalDate today = LocalDate.now();
            start = statisticsQueryDto.getStartTime();
            end = statisticsQueryDto.getEndTime().plusDays(1);
            // 获取本月1号的日期
//            start = yearMonth.atDay(1);
//
//            System.out.println("本月1号是: " + start);
            end = statisticsQueryDto.getEndTime();
        }else if (statisticsQueryDto.getDayType()==4){
            // 获取今年1月1日的日期
            start = statisticsQueryDto.getStartTime();
            end = statisticsQueryDto.getEndTime();
        }else if (statisticsQueryDto.getDayType()==5){
            // 获取今年1月1日的日期
            start = statisticsQueryDto.getStartTime();
            end = statisticsQueryDto.getEndTime();
@@ -1287,10 +1285,6 @@
                end =  end.plusDays(1);
            }
        }
//        List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getCreateTime, start).le(TChargingOrder::getCreateTime, end).in(TChargingOrder::getSiteId, siteIds).list();
//        List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
//        chargingOrderIds.add(-1L);
        //上方饼图
         List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end, siteIds);
@@ -1319,10 +1313,7 @@
            tCharingOrderMapVO.setMaps1(charMap);
        }else if (statisticsQueryDto.getDayType()==2){
            List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(start,end);
            List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(start,end, siteIds);
            LocalDate startDate = statisticsQueryDto.getStartTime();
            LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1352,7 +1343,7 @@
            }
            tCharingOrderMapVO.setMaps1(dateRangeStatistics);
        }else if (statisticsQueryDto.getDayType()==3){
            List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(start,end);
            List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(start,end, siteIds);
            LocalDate startDate = statisticsQueryDto.getStartTime();
            LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1382,7 +1373,7 @@
            }
            tCharingOrderMapVO.setMaps1(dateRangeStatistics);
        }else  if (statisticsQueryDto.getDayType()==4){
            List<Map<String,Object>> maps1 = chargingOrderService.getYearData(start,end);
            List<Map<String,Object>> maps1 = chargingOrderService.getYearData(start,end, siteIds);
            LocalDate startDate = statisticsQueryDto.getStartTime();
            LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1413,7 +1404,7 @@
            }
            tCharingOrderMapVO.setMaps1(dateRangeStatistics);
        }else if (statisticsQueryDto.getDayType()==5){
            List<Map<String,Object>> maps1 = chargingOrderService.getByDate(start,end);
            List<Map<String,Object>> maps1 = chargingOrderService.getByDate(start,end, siteIds);
            LocalDate startDate = statisticsQueryDto.getStartTime();
            LocalDate endDate = statisticsQueryDto.getEndTime();
@@ -1873,18 +1864,35 @@
        LocalDateTime max = selectDate.with(LocalTime.MAX);
        List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds)
                .ge( TChargingOrder::getCreateTime,min).le(BasePojo::getCreateTime,max).eq(TChargingOrder::getStatus,5)
                .between(TChargingOrder::getCreateTime, min, max).eq(TChargingOrder::getStatus,5)
                .eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list();
        //当日的订单总数
        int size = list.size();
        //计算list中paymentAmount的总和
        BigDecimal totalPaymentAmount = list.stream().map(TChargingOrder::getPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalPaymentAmount = BigDecimal.ZERO;
        //计算list中electrovalence的总和
        BigDecimal totalElectrovalence = list.stream().map(TChargingOrder::getElectrovalence).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalElectrovalence = BigDecimal.ZERO;
        //计算list中serviceCharge的总和
        BigDecimal totalServiceCharge = list.stream().map(TChargingOrder::getServiceCharge).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalServiceCharge = BigDecimal.ZERO;
        //计算list中charging_capacity的总和
        BigDecimal totalChargingCapacity = list.stream().map(TChargingOrder::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
        BigDecimal totalChargingCapacity = BigDecimal.ZERO;
        List<TChargingOrderAccountingStrategy> accountingStrategyList = chargingOrderAccountingStrategyService.list();
        for (TChargingOrder order : list) {
            List<TChargingOrderAccountingStrategy> collect = accountingStrategyList.stream().filter(s -> s.getChargingOrderId().equals(order.getId())).collect(Collectors.toList());
            BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
            totalElectrovalence = totalElectrovalence.add(periodElectricPrice);
            totalChargingCapacity = totalChargingCapacity.add(chargingCapacity);
            if(2 != order.getOrderSource()){
                totalServiceCharge = totalServiceCharge.add(periodServicePrice);
                totalPaymentAmount = totalPaymentAmount.add(periodElectricPrice).add(periodServicePrice);
            }else{
                totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
                totalPaymentAmount = totalPaymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
            }
        }
        TCharingWorkVO tCharingWorkVO = new TCharingWorkVO();
        tCharingWorkVO.setCount(size);
        tCharingWorkVO.setTotalPaymentAmount(totalPaymentAmount);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -66,22 +66,22 @@
    List<SixCircleDto> circle(@Param("siteIds")List<Integer> siteIds,@Param("sixBefore")LocalDate sixBefore);
    Map<String, Object> countAll(@Param("sixBefore")LocalDate sixBefore,@Param("siteIds")List<Integer> siteIds);
    Map<String, Object> countAll(@Param("sixBefore")LocalDateTime sixBefore,@Param("siteIds")List<Integer> siteIds);
    List<Map<String, Object>> getSumByType(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<Map<String, Object>> getDateData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<Map<String, Object>> getWeekData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
    List<Map<String, Object>> getWeekData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<Map<String, Object>> getMonthData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
    List<Map<String, Object>> getMonthData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<Map<String, Object>> getYearData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
    List<Map<String, Object>> getYearData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
    List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
    List<ChargingOrderListVO> chargingListNoPage( @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
    List<Map<String, Object>> getByDate(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
    List<Map<String, Object>> getByDate(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,List<Integer> siteIds);
    List<Map<String, Object>> queryPower(@Param("siteIds")List<Integer> siteIds);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java
@@ -12,6 +12,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -30,5 +31,5 @@
    List<SixVipDto> sixBefore(@Param("sixBefore")LocalDate sixBefore);
    BigDecimal getSumAmout(@Param("sixBefore")LocalDate sixBefore);
    BigDecimal getSumAmout(@Param("sixBefore") LocalDateTime sixBefore);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -20,6 +20,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -144,17 +145,17 @@
    List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore);
    Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds);
    Map<String, Object> countAll(LocalDateTime sixBefore, List<Integer> siteIds);
    List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds);
    List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds);
    List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end);
    List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds);
    List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end);
    List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds);
    List<Map<String, Object>> getYearData(LocalDate start,LocalDate end);
    List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds);
    ChargingOrderTimeVO chargingList(ChargingListQuery dto);
@@ -190,7 +191,7 @@
     */
    void excelEndCharge(String orderCode);
    List<Map<String, Object>> getByDate(LocalDate start,LocalDate end);
    List<Map<String, Object>> getByDate(LocalDate start,LocalDate end, List<Integer> siteIds);
    List<Map<String, Object>> queryPower(List<Integer> siteIds);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
@@ -14,6 +14,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -79,7 +80,7 @@
    List<SixShopDto> sixBefore(LocalDate sixBefore, Integer status);
    BigDecimal getSumAmount(LocalDate sixBefore);
    BigDecimal getSumAmount(LocalDateTime sixBefore);
    List<Map<String, Object>> getData(ChargingStatisticsQueryDto statisticsQueryDto);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java
@@ -8,6 +8,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -24,7 +25,7 @@
    List<SixVipDto> sixBefore(LocalDate sixBefore);
    BigDecimal getSumAmout(LocalDate sixBefore);
    BigDecimal getSumAmout(LocalDateTime sixBefore);
    void payBack(String outTradeNo);
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -88,7 +88,6 @@
    @Override
    public ChargingBillVO chargingBillList1(ChargingListQuery dto) {
        ChargingBillVO chargingBillVO = new ChargingBillVO();
        List<TChargingOrder> tChargingOrders1 = new ArrayList<>();
        String startTime1 = null;
@@ -105,7 +104,7 @@
        List<TAppUser> userList = appUserClient.getAllUser().getData();
        List<TAppUserCar> carList = appUserCarClient.getAllCar().getData();
        List<TChargingOrder> total = chargingOrderList.selectList(new LambdaQueryWrapper<>(TChargingOrder.class)
                .eq(TChargingOrder::getRechargePaymentStatus, 2));
                .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
        List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list();
        Long userId = tokenService.getLoginUser().getUserid();
        // 查询当前登陆人按钮权限
@@ -521,7 +520,7 @@
            startTime2 = split[1];
        }
        List<TChargingOrder> total = chargingOrderList.selectList(new LambdaQueryWrapper<>(TChargingOrder.class)
                .eq(TChargingOrder::getRechargePaymentStatus, 2));
                .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
        PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
        List<Site> data6 = siteClient.getSiteAll().getData();
        List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1334,13 +1334,6 @@
        dto.setSiteIds(siteIds);
        List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
        List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
         BigDecimal total = new BigDecimal("0");
         long time = 0L;
         BigDecimal electronicMoney = new BigDecimal("0");
         BigDecimal serviceMoney = new BigDecimal("0");
         BigDecimal commissionMoney = new BigDecimal("0");
         BigDecimal refundMoney = new BigDecimal("0");
         BigDecimal paymentMoney = new BigDecimal("0");
        List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
        for (ChargingOrderVO chargingOrderVO : list) {
@@ -1407,24 +1400,31 @@
            }
        }
        List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
                .eq(TChargingOrderRefund::getRefundStatus,2).list();
        BigDecimal total = new BigDecimal("0");
        long time = 0L;
        BigDecimal electronicMoney = new BigDecimal("0");
        BigDecimal serviceMoney = new BigDecimal("0");
        BigDecimal refundMoney = new BigDecimal("0");
        BigDecimal paymentMoney = new BigDecimal("0");
        for (ChargingOrderVO chargingOrderVO : list1) {
            if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
                continue;
            }
            List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
            BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
            electronicMoney = electronicMoney.add(electronic_reduce);
            total = total.add(chargingCapacity);
            if (!chargingOrderVO.getOrderSource().equals(2)) {
                paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
                serviceMoney = serviceMoney.add(service_reduce);
                paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
            }else{
                paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
            }
//            if (chargingOrderVO.getRechargeAmount()!=null){
//                commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
//            }
            if (chargingOrderVO.getChargingCapacity()!=null){
                total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
                serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
                paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
            }
            if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
                LocalDateTime startTime = chargingOrderVO.getStartTime();
@@ -1438,20 +1438,12 @@
            for (TChargingOrderRefund tChargingOrderRefund : list2) {
                refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
            }
            //充电明细
            electronicMoney = electronicMoney.add(electronic_reduce);
            if (!chargingOrderVO.getOrderSource().equals(2)){
                serviceMoney = serviceMoney.add(service_reduce);
            }else{
                serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
            }
        }
        tCharingOrderVO.setTotal(total);
        tCharingOrderVO.setTime(time);
        tCharingOrderVO.setIncome(paymentMoney);
        tCharingOrderVO.setElectronicMoney(electronicMoney);
        tCharingOrderVO.setServiceMoney(serviceMoney);
        tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        pageInfo.setRecords(list);
        tCharingOrderVO.setList(pageInfo);
        return tCharingOrderVO;
@@ -1501,7 +1493,7 @@
    }
    @Override
    public Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds) {
    public Map<String, Object> countAll(LocalDateTime sixBefore,List<Integer> siteIds) {
        return this.baseMapper.countAll(sixBefore,siteIds);
    }
@@ -1520,24 +1512,24 @@
    }
    @Override
    public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end) {
    public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds) {
        LocalDateTime start1 = start.atStartOfDay();
        LocalDateTime end1 = end.atTime(LocalTime.MAX);
        return this.baseMapper.getWeekData(start1,end1);
        return this.baseMapper.getWeekData(start1,end1,siteIds);
    }
    @Override
    public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end) {
    public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds) {
        LocalDateTime start1 = start.atStartOfDay();
        LocalDateTime end1 = end.atTime(LocalTime.MAX);
        return this.baseMapper.getMonthData(start1,end1);
        return this.baseMapper.getMonthData(start1,end1,siteIds);
    }
    @Override
    public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end) {
    public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds) {
        LocalDateTime start1 = start.atStartOfDay();
        LocalDateTime end1 = end.atTime(LocalTime.MAX);
        return this.baseMapper.getYearData(start1,end1);
        return this.baseMapper.getYearData(start1,end1,siteIds);
    }
    @Resource
@@ -1802,22 +1794,18 @@
        BigDecimal gu = new BigDecimal("0");
        List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
        for (ChargingOrderListVO chargingOrderListVO : list1) {
            if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
            if (chargingOrderListVO.getPaymentAmount()!=null){
            List<TChargingOrderAccountingStrategy> collect = chargingOrderAccountingStrategies.stream().filter(s -> s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
            BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
            electronic = electronic.add(chargingCapacity);
            electrovalence = electrovalence.add(periodElectricPrice);
                if (chargingOrderListVO.getOrderSource().equals(2)){
                    paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0"));
                serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
                paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
                }else{
                    paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
                }
            }
            if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
            if (chargingOrderListVO.getServiceCharge()!=null){
                if (chargingOrderListVO.getOrderSource().equals(2)){
                    serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                }else{
                    serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
                }
                serviceCharge = serviceCharge.add(periodServicePrice);
                paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
            }
            if (!chargingOrderListVO.getOrderSource().equals(2)){
                List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
@@ -1825,24 +1813,48 @@
                for (TChargingOrderAccountingStrategy temp : list2) {
                    switch (temp.getType()){
                        case 1:
                            if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge());
                            if (temp.getChargingCapacity()!=null){
                                jian = jian.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                jianElectronic = jianElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                jianService = jianService.add(temp.getServiceCharge());
                            }
                            break;
                        case 2:
                            if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge());
                            if (temp.getChargingCapacity()!=null){
                                feng = feng.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                fengElectronic = fengElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                fengService = fengService.add(temp.getServiceCharge());
                            }
                            break;
                        case 3:
                            if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge());
                            if (temp.getChargingCapacity()!=null){
                                ping = ping.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                pingElectronic = pingElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                pingService = pingService.add(temp.getServiceCharge());
                            }
                            break;
                        case 4:
                            if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge());
                            if (temp.getChargingCapacity()!=null){
                                gu = gu.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                guElectronic = guElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                guService = guService.add(temp.getServiceCharge());
                            }
                            break;
                    }
                }
@@ -1852,34 +1864,58 @@
                for (TChargingOrderAccountingStrategy temp : list2) {
                    switch (temp.getType()){
                        case 1:
                            if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            if (temp.getChargingCapacity()!=null){
                                jian = jian.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                jianElectronic = jianElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            }
                            break;
                        case 2:
                            if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            if (temp.getChargingCapacity()!=null){
                                feng = feng.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                fengElectronic = fengElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            }
                            break;
                        case 3:
                            if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            if (temp.getChargingCapacity()!=null){
                                ping = ping.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                pingElectronic = pingElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            }
                            break;
                        case 4:
                            if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
                            if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
                            if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            if (temp.getChargingCapacity()!=null){
                                gu = gu.add(temp.getChargingCapacity());
                            }
                            if (temp.getElectrovalence()!=null){
                                guElectronic = guElectronic.add(temp.getElectrovalence());
                            }
                            if (temp.getServiceCharge()!=null){
                                guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
                            }
                            break;
                    }
                }
            }
        }
        chargingOrderTimeVO.setChargingCapacity(electronic);
        chargingOrderTimeVO.setPaymentAmount(paymentAmount);
        chargingOrderTimeVO.setElectrovalence(electrovalence);
        chargingOrderTimeVO.setServiceCharge(serviceCharge);
        chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        chargingOrderTimeVO.setPaymentAmount(paymentAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        chargingOrderTimeVO.setServiceCharge(serviceCharge.setScale(2, BigDecimal.ROUND_HALF_EVEN));
        // 计算尖峰平谷充电到账占比
        BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
@@ -2559,11 +2595,11 @@
    
    
    @Override
    public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end) {
    public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end,List<Integer> siteIds) {
            LocalDateTime start1 = start.atStartOfDay();
            LocalDateTime end1 = end.atTime(LocalTime.MAX);
        return this.baseMapper.getByDate(start1,end1);
        return this.baseMapper.getByDate(start1,end1,siteIds);
    }
    @Override
@@ -3126,13 +3162,9 @@
            siteIds.add(-1);
        }
        List<Site> siteList = siteClient.getSiteAll().getData();
        List<TChargingGun> gunList = chargingGunClient.getAllGun().getData();
        List<TChargingPile> pileList = chargingGunClient.getAllPile().getData();
        List<TAppUser> userList = appUserClient.getAllUser().getData();
        List<TAppUserCar> carList = appUserCarClient.getAllCar().getData();
        List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class)
                .eq(TChargingOrder::getRechargePaymentStatus, 2));
        List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list();
                .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5));
        SettlementTotalVO res = new SettlementTotalVO();
        List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
        LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@@ -3169,8 +3201,6 @@
        BigDecimal orderCommission = new BigDecimal("0");
        BigDecimal vipDiscount = new BigDecimal("0");
        BigDecimal couponDiscount = new BigDecimal("0");
//        tSettlementConfirm1.setIncomePercentage();
//        tSettlementConfirm1.setTotalPercentage();
        tSettlementConfirm1.setElectronicRefund(0);
        // 上月成本合计
        BigDecimal beforeCost= new BigDecimal("0");
@@ -3245,7 +3275,6 @@
            for (TChargingPile datum : data) {
                bigDecimal = bigDecimal.add(datum.getRatedPower());
            }
            tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
            //利用率=充电量/(桩数量*功率*时间)
@@ -3335,7 +3364,6 @@
            BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
            tSettlementConfirm.setIncomePercentage(subtract+"%");
            tSettlementConfirm.setIncomePercentage(subtract+"%");
        }
        // 比较总利润 收入合计-成本合计
        BigDecimal subtract1 = income.subtract(cost);
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
@@ -20,6 +20,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -75,7 +76,7 @@
    }
    @Override
    public BigDecimal getSumAmout(LocalDate sixBefore) {
    public BigDecimal getSumAmout(LocalDateTime sixBefore) {
        return this.baseMapper.getSumAmout(sixBefore);
    }
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -76,7 +76,7 @@
    <select id="chargingOrder" resultType="com.ruoyi.order.api.vo.ChargingOrderVO">
        select t1.*
        from t_charging_order t1
        where 1=1
        where t1.del_flag = 0
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
        </if>
@@ -446,26 +446,32 @@
    </select>
    <select id="getDateData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT( create_time, '%H:00' ) as time,
        CAST(
        SUM(
        CASE
        WHEN order_source = 0 THEN service_charge
        WHEN order_source = 1 THEN service_charge
        ELSE service_charge * 0.2
        END
        )AS DECIMAL(20, 6)) as  servicecharge,
        CAST(SUM(charging_capacity) AS DECIMAL(20, 6)) as electrovalence,
        CAST(SUM(electrovalence) AS DECIMAL(20, 4)) AS paymentAmount,
        SUM(payment_amount) AS paymoney,
        DATE_FORMAT(a.create_time, '%H:00' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
        ELSE b.period_service_price * 0.8
        END) as servicecharge,
        SUM(a.charging_capacity) as electrovalence,
        SUM(a.electrovalence) AS paymentAmount,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        END), 2) AS paymoney,
        count(1) as orderCount
        FROM
        t_charging_order
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            del_flag = 0 and recharge_payment_status = 2  and DATE(create_time) = CURDATE()
            and create_time between #{start} and #{end}
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and DATE(a.create_time) = CURDATE()
            and a.create_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
                    #{item}
                </foreach>
            </if>
        </where>
        GROUP BY
            time
@@ -475,23 +481,32 @@
    </select>
    <select id="getWeekData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN order_source = 0 THEN service_charge
        WHEN order_source = 1 THEN service_charge
        ELSE service_charge * 0.2
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
        ELSE b.period_service_price * 0.8
        END) as servicecharge,
        SUM(charging_capacity) as electrovalence,
        SUM(electrovalence) AS paymentAmount,
        SUM(payment_amount) AS paymoney,
        SUM(a.charging_capacity) as electrovalence,
        SUM(a.electrovalence) AS paymentAmount,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        END), 2) AS paymoney,
        count(1) as orderCount
        FROM
        t_charging_order
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            del_flag = 0 and recharge_payment_status = 2  and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
            and create_time between #{start} and #{end}
            a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2  and YEARWEEK(DATE_FORMAT(a.create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
            and a.create_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
                    #{item}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -501,28 +516,32 @@
    </select>
    <select id="getMonthData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN order_source = 0 THEN service_charge
        WHEN order_source = 1 THEN service_charge
        ELSE service_charge * 0.2
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
        ELSE b.period_service_price * 0.8
        END) as servicecharge,
        SUM(charging_capacity) as electrovalence,
        SUM(electrovalence) AS paymentAmount,
        SUM(
        CASE
        WHEN order_source = 0 THEN payment_amount
        WHEN order_source = 1 THEN payment_amount
        ELSE service_charge * 0.2
        END) AS paymoney,
        SUM(a.charging_capacity) as electrovalence,
        SUM(a.electrovalence) AS paymentAmount,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        END), 2) AS paymoney,
        count(1) as orderCount
        FROM
        t_charging_order
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            del_flag = 0 and recharge_payment_status = 2  and MONTH(create_time) = MONTH(NOW())  AND YEAR(create_time) = YEAR(NOW())
            and create_time between #{start} and #{end}
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and MONTH(a.create_time) = MONTH(NOW())  AND YEAR(a.create_time) = YEAR(NOW())
            and a.create_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
                    #{item}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -532,50 +551,66 @@
    </select>
    <select id="getYearData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN order_source = 0 THEN service_charge
        WHEN order_source = 1 THEN service_charge
        ELSE service_charge * 0.2
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
        ELSE b.period_service_price * 0.8
        END) as servicecharge,
        SUM(charging_capacity) as electrovalence,
        SUM(electrovalence) AS paymentAmount,
        SUM(payment_amount) AS paymoney,
        SUM(a.charging_capacity) as electrovalence,
        SUM(a.electrovalence) AS paymentAmount,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        END), 2) AS paymoney,
        count(1) as orderCount
        FROM
        t_charging_order
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            del_flag = 0 and recharge_payment_status = 2  and YEAR(create_time) = YEAR(NOW())
            and create_time between #{start} and #{end}
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and YEAR(a.create_time) = YEAR(NOW())
            and a.create_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
                    #{item}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
        ORDER BY
        time
    </select>
    <select id="getByDate" resultType="java.util.Map">
        SELECT
        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN order_source = 0 THEN service_charge
        WHEN order_source = 1 THEN service_charge
        ELSE service_charge * 0.2
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
        ELSE b.period_service_price * 0.2
        END) as servicecharge,
        SUM(charging_capacity) as electrovalence,
        SUM(electrovalence) AS paymentAmount,
        SUM(payment_amount) AS paymoney,
        SUM(a.charging_capacity) as electrovalence,
        SUM(a.electrovalence) AS paymentAmount,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        END), 2) AS paymoney,
        count(1) as orderCount
        FROM
        t_charging_order
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            del_flag = 0 and recharge_payment_status = 2
            and create_time between #{start} and #{end}
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2
            and a.create_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
                    #{item}
                </foreach>
            </if>
        </where>
        GROUP BY
        time
@@ -912,7 +947,7 @@
    <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
        select t1.*,
               t1.current as chargingCapacity,t1.payment_amount as paymentAmount,t1.electricity as chargingCapacity from t_charging_order t1
        where 1=1
        where t1.del_flag = 0 and t1.status = 5  and t1.recharge_payment_status = 2
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
        </if>
@@ -952,7 +987,6 @@
        <if test="endTime1 != null and endTime1!=''">
            and (t1.end_time between #{endTime1} and #{endTime2})
        </if>
        AND t1.del_flag = 0
        and t1.start_time IS NOT NULL
        order by t1.create_time desc
    </select>