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 +++++++++++++++++++++++++++++---------------------- 1 files changed, 118 insertions(+), 90 deletions(-) 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); -- Gitblit v1.7.1