From 52d5c9930a199430d0f524e24e85eb65e09514c9 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 13 二月 2025 08:57:43 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 127 +++++++++++++++++++++--------------------- 1 files changed, 64 insertions(+), 63 deletions(-) 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 a20b110..56f0152 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 @@ -1,5 +1,7 @@ package com.ruoyi.order.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; @@ -45,6 +47,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; @@ -523,8 +526,14 @@ startTime1 = split[0]; startTime2 = split[1]; } + List<TChargingOrder> total = chargingOrderList.selectList(new LambdaQueryWrapper<>(TChargingOrder.class) + .eq(TChargingOrder::getRechargePaymentStatus, 2)); PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); - PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); + List<Site> data6 = 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(); Long userId = tokenService.getLoginUser().getUserid(); // 查询当前登陆人按钮权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); @@ -569,7 +578,7 @@ dto.setSiteIds(siteIds); List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2); - List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList(pageInfo1,dto,startTime1,startTime2); + List<ChargingBillListVO> list1 = this.baseMapper.chargingBillListNoLimit(dto,startTime1,startTime2); BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); BigDecimal electrovalenceTotal = new BigDecimal("0"); @@ -612,7 +621,7 @@ break; case 2: temp = "各个站点账单"; - temp1 = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0).getName(); + temp1 = data6.stream().filter(e->e.getId().equals(chargingBillListVO.getSiteId())).findFirst().orElse(new Site()).getName(); break; } chargingBillVO.setCategory(temp); @@ -634,19 +643,21 @@ // 账单周期 chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); // 获取 LocalDate 对象 - LocalDate date = localDate.toLocalDate(); // // 获取该月份的第一天 - LocalDate firstDayOfMonth = date.withDayOfMonth(1); // 获取该月份的最后一天 - LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); - QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() - .between("pay_time", firstDayOfMonth.atTime(0, 0, 0), lastDayOfMonth.atTime(23, 59, 59)) - .eq("status", 5) - .eq("recharge_payment_status", 2); - if (chargingBillListVO.getType() == 2) { - eq.eq("site_id", chargingBillListVO.getSiteId()); - } - List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + LocalDateTime lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); + LocalDateTime firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth()); +// QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() +// .between("pay_time", firstDayOfMonth.withHour(0).withMinute(0).withSecond(0), lastDayOfMonth.withHour(23).withMinute(59).withSecond(59)) +// .eq("recharge_payment_status", 2); +// if (chargingBillListVO.getType() == 2) { +// eq.eq("site_id", chargingBillListVO.getSiteId()); +// } +// List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + List<TChargingOrder> tChargingOrders = total.stream().filter(e -> chargingBillListVO.getType() == 2 ? + e.getSiteId().equals(chargingBillListVO.getSiteId()) : true && + e.getPayTime().isBefore(lastDayOfMonth.withHour(23).withMinute(59).withSecond(59)) + && e.getPayTime().isAfter(firstDayOfMonth.withHour(0).withMinute(0).withSecond(0))).collect(Collectors.toList()); int chargingSecond = 0; BigDecimal paymentAmount = new BigDecimal("0"); BigDecimal orderAmount = new BigDecimal("0"); @@ -671,12 +682,9 @@ chargingBillListVO.setPayTypeName("支付宝商户"); } } - List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData(); - if (!data.isEmpty()){ - chargingBillVO.setSiteName(data.get(0).getName()); - } - TChargingPile data1 = chargingPileClient.getChargingPileById(tChargingOrder.getChargingPileId()).getData(); - TChargingGun data2 = chargingGunClient.getChargingGunById(tChargingOrder.getChargingGunId()).getData(); + chargingBillVO.setSiteName(data6.stream().filter(e->e.getId().equals(chargingBillListVO.getSiteId())).findFirst().orElse(new Site()).getName()); + TChargingGun data2 = gunList.stream().filter(e -> e.getId().equals(tChargingOrder.getChargingGunId())).findFirst().orElse(null); + TChargingPile data1 = pileList.stream().filter(e -> e.getId().equals(tChargingOrder.getChargingPileId())).findFirst().orElse(null); if (data1!=null && data2!=null){ tChargingOrder.setTerminalName(data1.getName()+data2.getName()); tChargingOrder.setTerminalCode(data2.getCode()); @@ -723,18 +731,18 @@ BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge()); tChargingOrder.setTotalAmount(add.toString()); tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0"); - UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); - if (data5!=null){ - if (data5.getCumulative_charging_time()!=null){ - chargingSecond+=data5.getCumulative_charging_time()*60; - } - Integer cumulativeChargingTime = data5.getCumulative_charging_time(); + if (tChargingOrder.getStartTime()!=null && tChargingOrder.getEndTime()!=null){ + LocalDateTime startTime = tChargingOrder.getStartTime(); + LocalDateTime endTime = tChargingOrder.getEndTime(); + // 计算时间差 单位秒 + long between = ChronoUnit.SECONDS.between(startTime, endTime); + chargingSecond+=between; // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 - if (cumulativeChargingTime!=null){ + // 计算小时、分钟和秒 - int hours = cumulativeChargingTime / 60; - int minutes = cumulativeChargingTime % 60; - int seconds = 0; // 如果没有秒数,则默认是0 + long hours = between / 60 / 60; + long minutes = (between % 3600) / 60; + long seconds = between % 60; // 如果没有秒数,则默认是0 StringBuilder result = new StringBuilder(); if (hours > 0) { result.append(hours).append("小时"); @@ -746,15 +754,15 @@ result.append(seconds).append("秒"); } tChargingOrder.setChargingTime(result.toString()); - } - tChargingOrder.setEndSoc(data5.getSoc().toString()); + } - TAppUser data3 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData(); + + TAppUser data3 = userList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserId())).findFirst().orElse(null); if (tChargingOrder.getAppUserCarId()!=null){ - List<TAppUserCar> data4 = appUserCarClient.getCarByIds(Arrays.asList(tChargingOrder.getAppUserCarId())).getData(); - if (!data4.isEmpty()){ - tChargingOrder.setLicensePlate(data4.get(0).getLicensePlate()); - tChargingOrder.setVehicleModel(data4.get(0).getVehicleModel()); + TAppUserCar tAppUserCar = carList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserCarId())).findFirst().orElse(null); + if (tAppUserCar!=null){ + tChargingOrder.setLicensePlate(tAppUserCar.getLicensePlate()); + tChargingOrder.setVehicleModel(tAppUserCar.getVehicleModel()); } } if (data3!=null)tChargingOrder.setUserName(data3.getName()); @@ -797,9 +805,9 @@ // 格式化为字符串 String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds); chargingBillVO.setChargingTime(timeString); - chargingBillListVO.setOrderAmount(orderAmount.subtract(refundAmount)); + chargingBillListVO.setOrderAmount(paymentAmount); - chargingBillListVO.setPaymentAmount(chargingBillListVO.getOrderAmount().subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN)); + chargingBillListVO.setPaymentAmount(paymentAmount.subtract(commissionAmount).subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN)); chargingBillListVO.setElectrovalence(electrovalence); chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,BigDecimal.ROUND_DOWN)); chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN)); @@ -810,7 +818,7 @@ chargingBillListVO.setSiteName("全站"); break; case 2: - Site site = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0); + Site site = data6.stream().filter(e -> e.getId().equals(chargingBillListVO.getSiteId())).findFirst().orElse(null); if (site!=null){ chargingBillListVO.setSiteName(site.getName()); } @@ -843,21 +851,21 @@ // 账单周期 chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); // 获取 LocalDate 对象 - LocalDate date = localDate.toLocalDate(); // // 获取该月份的第一天 - LocalDate firstDayOfMonth = date.withDayOfMonth(1); // 获取该月份的最后一天 - LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); -// LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); -// LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); - QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() - .between("create_time", firstDayOfMonth, lastDayOfMonth) - .eq("status", 5) - .eq("recharge_payment_status", 2); - if (chargingBillListVO.getType() == 2) { - eq.eq("site_id", chargingBillListVO.getSiteId()); - } - List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + LocalDateTime lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); + LocalDateTime firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth()); +// QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() +// .between("pay_time", firstDayOfMonth.withHour(0).withMinute(0).withSecond(0), lastDayOfMonth.withHour(23).withMinute(59).withSecond(59)) +// .eq("recharge_payment_status", 2); +// if (chargingBillListVO.getType() == 2) { +// eq.eq("site_id", chargingBillListVO.getSiteId()); +// } +// List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); + List<TChargingOrder> tChargingOrders = total.stream().filter(e -> chargingBillListVO.getType() == 2 ? + e.getSiteId().equals(chargingBillListVO.getSiteId()) : true && + e.getPayTime().isBefore(lastDayOfMonth.withHour(23).withMinute(59).withSecond(59)) + && e.getPayTime().isAfter(firstDayOfMonth.withHour(0).withMinute(0).withSecond(0))).collect(Collectors.toList()); orderCount+=tChargingOrders.size(); BigDecimal paymentAmount = new BigDecimal("0"); BigDecimal orderAmount = new BigDecimal("0"); @@ -918,7 +926,7 @@ } chargingBillVO.setChargingCapacity(chargingCapacityTotal); chargingBillVO.setPaymentAmount(paymentAmountTotal.subtract(commissionAmountTotal).subtract(sharingAmountTotal).setScale(2, BigDecimal.ROUND_DOWN)); - chargingBillVO.setOrderAmount(orderAmountTotal.subtract(refundAmountTotal).setScale(2, BigDecimal.ROUND_DOWN)); + chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, BigDecimal.ROUND_DOWN)); chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, BigDecimal.ROUND_DOWN)); chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, BigDecimal.ROUND_DOWN)); chargingBillVO.setOrderCount(orderCount); @@ -931,15 +939,8 @@ } public static void main(String[] args) { - LocalDateTime localDateTime = LocalDateTime.now().minusMonths(1); - // 获取 LocalDate 对象 - LocalDate date = localDateTime.toLocalDate(); -// // 获取该月份的第一天 - LocalDate firstDayOfMonth = date.withDayOfMonth(1); - // 获取该月份的最后一天 - LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); - System.err.println(firstDayOfMonth); - System.err.println(lastDayOfMonth); + LocalDateTime localDate = LocalDateTime.now().withMonth(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0); + } } -- Gitblit v1.7.1