From cf32754f130955a617836cae7685c1a24979060c Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 19 三月 2025 17:25:54 +0800 Subject: [PATCH] 修改报表bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 208 +++++++++++--------- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java | 3 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java | 4 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 5 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java | 2 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java | 4 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java | 4 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 2 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java | 3 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java | 2 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java | 16 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 11 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java | 6 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java | 4 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 184 ++++++++++------- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java | 3 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java | 6 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 98 +++++---- 24 files changed, 332 insertions(+), 258 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java index b0deac8..b807425 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java index 611230d..36c9fa9 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java index aeba294..75cc7a1 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java index e912626..8bce10c 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java index b5e2ebc..1341ab8 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java index d2091f0..ec29620 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java index b614702..ecee297 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java index d6c922f..433567d 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java index e5298d0..b127594 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java index 6756519..b1f6b08 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java +++ b/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 diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java index b120a41..1fa47d3 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ExchangeOrderFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java index 19ec997..33fa62f 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java +++ b/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()); } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java index 9c460b8..944d6b9 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java +++ b/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()); } }; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java index 599d97a..5ce69cf 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java +++ b/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()); } }; diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 325b337..3259d9e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/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); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java index 7f5ff3e..c82b8b0 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java +++ b/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); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java index 67c387d..1aa58df 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java +++ b/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); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index 64b1198..742c6f2 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/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); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java index 09a7d53..c3c9dab 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java +++ b/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); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java index 1434169..7ad9af4 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java +++ b/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); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java index 84ec02b..a039aff 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java +++ b/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(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index e332428..66e4ed3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/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){ - 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")); - }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()); - } + 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)){ + serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8"))); + paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8"))); + }else{ + 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); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java index b341dd9..28eecfc 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java +++ b/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); } diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index c92c846..278ae5a 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/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> -- Gitblit v1.7.1