From ae76f22f897cfd438b30829326b6ad36a80eaac0 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 21 二月 2025 18:23:13 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 580 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 356 insertions(+), 224 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 22f1e35..76f11e3 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,15 +1,23 @@ 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; import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; +import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.TChargingOrder; @@ -25,6 +33,9 @@ import com.ruoyi.order.mapper.TChargingOrderMapper; import com.ruoyi.order.service.TChargingBillService; import com.ruoyi.order.service.TChargingOrderRefundService; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.model.SysUserRoleVo; import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import org.omg.CORBA.PRIVATE_MEMBER; import org.springframework.stereotype.Service; @@ -36,9 +47,10 @@ 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.Arrays; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -50,7 +62,8 @@ */ @Service public class TChargingBillServiceImpl extends ServiceImpl<TChargingBillMapper, TChargingBill> implements TChargingBillService { - + @Resource + private SysUserClient sysUserClient; @Resource private TChargingOrderMapper chargingOrderList; @Resource @@ -67,16 +80,17 @@ private AppUserCarClient appUserCarClient; @Resource private TChargingOrderRefundService chargingOrderRefundService; + @Resource + private TokenService tokenService; + @Resource + private PartnerClient partnerClient; + + @Override public ChargingBillVO chargingBillList1(ChargingListQuery dto) { - if (dto.getState()!=null){ - if (dto.getState()==1){ - dto.setState(2); - }else { - dto.setState(1); - } - } + ChargingBillVO chargingBillVO = new ChargingBillVO(); + List<TChargingOrder> tChargingOrders1 = new ArrayList<>(); String startTime1 = null; String startTime2 = null; if (StringUtils.hasLength(dto.getStartTime())){ @@ -84,22 +98,73 @@ startTime1 = split[0]; startTime2 = split[1]; } + Long userId = tokenService.getLoginUser().getUserid(); + // 查询当前登陆人按钮权限 + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); + 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> total = chargingOrderList.selectList(new LambdaQueryWrapper<>(TChargingOrder.class) + .eq(TChargingOrder::getRechargePaymentStatus, 2)); + List<TChargingOrderRefund> totalRefund = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2).list(); + Integer roleType = sysUser.getRoleType(); + List<Integer> siteIds = new ArrayList<>(); + //如果没传siteId,获取当前登陆人所有的siteIds + if (dto.getSiteId()==null){ + if (userId != null){ + List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); + for (GetSiteListDTO datum : data) { + siteIds.add(datum.getId()); + } + } + }else { + siteIds.add(dto.getSiteId()); + } + if (siteIds.isEmpty()){ + siteIds.add(-1); + }else{ + if (roleType == 2){ + List<Integer> integers = new ArrayList<>(); + for (Integer siteId : siteIds) { + // 校验有没有这个站点的权限 + List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData(); + + Boolean b = t1.get(1); + if (b){ + integers.add(siteId); + } + } + siteIds = integers; + } + } + dto.setSiteIds(siteIds); + + PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); - PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2); - List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList1(pageInfo1,dto,startTime1,startTime2); - chargingBillVO.setOrderCount(list1.size()); + List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList1Nolimt(dto,startTime1,startTime2); + BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); + BigDecimal refundAmountTotal = new BigDecimal("0"); BigDecimal electrovalenceTotal = new BigDecimal("0"); BigDecimal serviceChargeTotal = new BigDecimal("0"); BigDecimal commissionAmountTotal = new BigDecimal("0"); BigDecimal sharingAmountTotal = new BigDecimal("0"); BigDecimal chargingCapacityTotal = new BigDecimal("0"); BigDecimal discountTotal = new BigDecimal("0"); - BigDecimal refundAmount = new BigDecimal("0"); - int orderCount = 0; + + for (ChargingBillListVO chargingBillListVO : list) { + if (roleType==2){ + List<Boolean> data = partnerClient.getAccountMenu(sysUser.getObjectId(), chargingBillListVO.getSiteId()).getData(); + chargingBillListVO.setAuthDownLoad(data.get(0)); + if (chargingBillListVO.getType()==1){ + continue; + } + } String temp = ""; String temp1 = ""; switch (chargingBillListVO.getType()){ @@ -126,49 +191,52 @@ chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 -// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); - // todo 临时修改为查询昨天的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); // 账单周期 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()); - // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 - 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()); + 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 rechargeAmount = new BigDecimal("0"); BigDecimal orderAmount = new BigDecimal("0"); BigDecimal electrovalence = new BigDecimal("0"); BigDecimal serviceCharge = new BigDecimal("0"); BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal chargingCapacity = new BigDecimal("0"); - orderCount+=tChargingOrders.size(); + BigDecimal refundAmount = new BigDecimal("0"); chargingBillVO.setCategory(""); chargingBillVO.setExportList(tChargingOrders); for (TChargingOrder tChargingOrder : tChargingOrders) { - List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData(); - if (!data.isEmpty()){ - chargingBillVO.setSiteName(data.get(0).getName()); + Site site1 = siteList.stream().filter(site -> site.getId().equals(tChargingOrder.getSiteId())).findFirst().orElse(null); + if (site1!=null){ + chargingBillVO.setSiteName(site1.getName()); } - TChargingPile data1 = chargingPileClient.getChargingPileById(tChargingOrder.getChargingPileId()).getData(); - TChargingGun data2 = chargingGunClient.getChargingGunById(tChargingOrder.getChargingGunId()).getData(); + TChargingPile data1 = pileList.stream().filter(e -> e.getId().equals(tChargingOrder.getChargingPileId())).findFirst().orElse(null); + TChargingGun data2 = gunList.stream().filter(e -> e.getId().equals(tChargingOrder.getChargingGunId())).findFirst().orElse(null); if (data1!=null && data2!=null){ tChargingOrder.setTerminalName(data1.getName()+data2.getName()); tChargingOrder.setTerminalCode(data2.getCode()); + } + if (tChargingOrder.getRechargePaymentType()!=null && tChargingOrder.getRechargePaymentType()==1){ + chargingBillListVO.setPayTypeName("微信商户"); + } + if (tChargingOrder.getRechargePaymentType()!=null && tChargingOrder.getRechargePaymentType()==2){ + if (StringUtils.hasLength(chargingBillListVO.getPayTypeName())){ + chargingBillListVO.setPayTypeName("微信商户+支付宝商户"); + }else{ + chargingBillListVO.setPayTypeName("支付宝商户"); + } } tChargingOrder.setOrderClassification1("线上订单"); tChargingOrder.setRechargePaymentType1("预付"); @@ -214,56 +282,62 @@ tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0"); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); if (data5!=null){ - if (data5.getTime_remaining()!=null){ - chargingSecond+=data5.getTime_remaining()*60; - } - Integer cumulativeChargingTime = data5.getCumulative_charging_time(); - // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 - if (cumulativeChargingTime!=null){ - // 计算小时、分钟和秒 - int hours = cumulativeChargingTime / 60; - int minutes = cumulativeChargingTime % 60; - int seconds = 0; // 如果没有秒数,则默认是0 - StringBuilder result = new StringBuilder(); - if (hours > 0) { - result.append(hours).append("小时"); - } - if (minutes > 0) { - result.append(minutes).append("分钟"); - } - if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 - result.append(seconds).append("秒"); - } - tChargingOrder.setChargingTime(result.toString()); - } tChargingOrder.setEndSoc(data5.getSoc().toString()); } + 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分钟则不展示分钟 - TAppUser data3 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData(); - 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()); + // 计算小时、分钟和秒 + 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("小时"); } + if (minutes > 0) { + result.append(minutes).append("分钟"); + } + if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 + result.append(seconds).append("秒"); + } + tChargingOrder.setChargingTime(result.toString()); + + } + TAppUser data3 = userList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserId())).findFirst().orElse(null); + if (tChargingOrder.getAppUserCarId()!=null){ + TAppUserCar data4 = carList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserCarId())).findFirst().orElse(null); + if (data4!=null){ + tChargingOrder.setLicensePlate(data4.getLicensePlate()); + tChargingOrder.setVehicleModel(data4.getVehicleModel()); + } + }else{ + tChargingOrder.setLicensePlate(tChargingOrder.getPlateNum()); } if (data3!=null)tChargingOrder.setUserName(data3.getName()); - // 累加实收金额 - if (tChargingOrder.getOrderAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount()); + // 累加实收金额 支付结算金额 + if (tChargingOrder.getRechargeAmount()!=null){ + paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); } - // 累加订单金额 + // 总金额 if (tChargingOrder.getOrderAmount()!=null){ - orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); + orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); } - List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2) - .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list(); + if (tChargingOrder.getRechargeAmount()!=null){ + rechargeAmount = rechargeAmount.add(tChargingOrder.getRechargeAmount()); + } + List<TChargingOrderRefund> list2 = totalRefund.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.getId())).collect(Collectors.toList()); for (TChargingOrderRefund tChargingOrderRefund : list2) { - refundAmount = refundAmount.add(tChargingOrderRefund.getRefundAmount()); + refundAmount = refundAmount.add(tChargingOrderRefund.getRefundTotalAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ @@ -271,7 +345,8 @@ } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006))); + commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(BigDecimal.valueOf(0.006)) + .setScale(2,BigDecimal.ROUND_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ @@ -294,26 +369,22 @@ chargingBillVO.setPaymentAmount(BigDecimal.ZERO); } - chargingBillVO.setOrderAmount(chargingBillVO.getPaymentAmount().subtract(chargingBillVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillVO.getRefundAmount()) - .subtract(chargingBillVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillVO.getCommissionAmount()) - .subtract(chargingBillVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillVO.getSharingAmount())); - chargingBillListVO.setPaymentAmount(paymentAmount == null?BigDecimal.ZERO:paymentAmount); - chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount); - chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:orderAmount); + chargingBillListVO.setPaymentAmount(paymentAmount.subtract(sharingAmount)); + chargingBillListVO.setOrderAmount(paymentAmount); + chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:refundAmount); chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence); chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge); - chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount.setScale(2, RoundingMode.HALF_DOWN)); + chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount.setScale(2,BigDecimal.ROUND_DOWN)); chargingBillListVO.setSharingAmount(sharingAmount == null?BigDecimal.ZERO:sharingAmount); chargingBillListVO.setChargingCapacity(chargingCapacity == null?BigDecimal.ZERO:chargingCapacity); - chargingBillListVO.setBillMoney(chargingBillListVO.getPaymentAmount().subtract(chargingBillListVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillListVO.getRefundAmount()) - .subtract(chargingBillListVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillListVO.getCommissionAmount()) - .subtract(chargingBillListVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillListVO.getSharingAmount())); + chargingBillListVO.setBillMoney(orderAmount + .subtract(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN)).subtract(sharingAmount).setScale(2, BigDecimal.ROUND_DOWN)); switch (chargingBillListVO.getType()){ case 1: chargingBillListVO.setSiteName("全站"); break; case 2: - Site site = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0); + Site site = siteList.stream().filter(e -> e.getId().equals(chargingBillListVO.getSiteId())).findFirst().orElse(null); if (site!=null){ chargingBillListVO.setSiteName(site.getName()); } @@ -324,7 +395,16 @@ // 充电时间秒 chargingBillListVO.setChargingSecond(chargingSecond); } + BigDecimal bigDecimal = new BigDecimal("0"); + int i = 0; for (ChargingBillListVO chargingBillListVO : list1) { + if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){ + continue; + } + if (chargingBillListVO.getType()==1){ + continue; + } + i++; LocalDateTime billTime = chargingBillListVO.getBillTime(); // 将其转化为yyyy-MM格式字符串 chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); @@ -332,48 +412,43 @@ chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); chargingBillListVO.setUid(chargingBillListVO.getId().toString()); -// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); - // todo 临时修改为查询昨天的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + // 根据账单的出账时间 查询上个月的充电订单 + LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); // 账单周期 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()); - // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 - 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); - orderCount+=tChargingOrders.size(); + // 获取该月份的最后一天 + LocalDateTime lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); + LocalDateTime firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth()); + 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()); + tChargingOrders1.addAll(tChargingOrders); chargingBillVO.setCategory(""); chargingBillVO.setExportList(tChargingOrders); for (TChargingOrder tChargingOrder : tChargingOrders) { - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); - - }else if (tChargingOrder.getPaymentAmount()!=null){ + if (tChargingOrder.getOrderAmount()!=null){ paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } + // 累加订单金额 if (tChargingOrder.getOrderAmount()!=null){ - orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); + orderAmountTotal = orderAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null&& tChargingOrder.getRefundStatus()==2){ - refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); + List<TChargingOrderRefund> list2 = totalRefund.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.getId())).collect(Collectors.toList()); + for (TChargingOrderRefund tChargingOrderRefund : list2) { + refundAmountTotal =refundAmountTotal.add(tChargingOrderRefund.getRefundAmount()); + tChargingOrder.setRefundAmount(tChargingOrderRefund.getRefundAmount()); + tChargingOrder.setRefundContent(tChargingOrderRefund.getRefundReason()); + tChargingOrder.setRefundCode(tChargingOrderRefund.getRefundCode()); + tChargingOrder.setRefundTime1(DateUtils.localDateTimeToString(tChargingOrderRefund.getRefundTime())); + bigDecimal = bigDecimal.add(tChargingOrderRefund.getRefundAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ @@ -381,7 +456,8 @@ } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ - commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006"))); + commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")) + .setScale(2,BigDecimal.ROUND_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ @@ -401,21 +477,27 @@ } } } + chargingBillVO.setOrderCount(i); chargingBillVO.setChargingCapacity(chargingCapacityTotal); - chargingBillVO.setPaymentAmount(paymentAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setOrderCount(orderCount); - chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); + chargingBillVO.setPaymentAmount(paymentAmountTotal.subtract(sharingAmountTotal)); + chargingBillVO.setOrderAmount(orderAmountTotal); + chargingBillVO.setElectrovalence(electrovalenceTotal); + chargingBillVO.setServiceCharge(serviceChargeTotal); + chargingBillVO.setCommissionAmount(commissionAmountTotal); + chargingBillVO.setSharingAmount(sharingAmountTotal); chargingBillVO.setDiscount(discountTotal); - - + chargingBillVO.setRefundAmount(refundAmountTotal); + List<TChargingOrder> collect = tChargingOrders1.stream().distinct().collect(Collectors.toList()); + if (!collect.isEmpty()){ + collect.get(0).setRefundAmount1(bigDecimal); + } + chargingBillVO.setExportList(collect); pageInfo.setRecords(list); chargingBillVO.setList(pageInfo); return chargingBillVO; } + + @Override public ChargingBillVO chargingBillList(ChargingListQuery dto) { if (dto.getState()!=null){ @@ -433,10 +515,59 @@ 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(); + Integer roleType = sysUser.getRoleType(); + //如果没传siteId,获取当前登陆人所有的siteIds + List<Integer> siteIds = new ArrayList<>(); + //如果没传siteId,获取当前登陆人所有的siteIds + if (dto.getSiteId()==null){ + if (userId != null){ + List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); + for (GetSiteListDTO datum : data) { + siteIds.add(datum.getId()); + } + } + }else { + siteIds.add(dto.getSiteId()); + } + if (siteIds.isEmpty()){ + siteIds.add(-1); + }else{ + if (roleType == 2){ + List<Integer> integers = new ArrayList<>(); + for (Integer siteId : siteIds) { + // 校验有没有这个站点的权限 + List<Boolean> t1= partnerClient.getChargingBillMenu(sysUser.getObjectId(),siteId).getData(); + + Boolean b = t1.get(1); + if (b){ + integers.add(siteId); + } + } + siteIds = integers; + } + } + + if (roleType==1){ + siteIds.add(0); + } + if (siteIds.isEmpty()){ + siteIds.add(-1); + } + 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"); @@ -445,9 +576,31 @@ BigDecimal sharingAmountTotal = new BigDecimal("0"); BigDecimal chargingCapacityTotal = new BigDecimal("0"); BigDecimal discountTotal = new BigDecimal("0"); - BigDecimal refundAmount = new BigDecimal("0"); + BigDecimal refundAmountTotal = new BigDecimal("0"); int orderCount = 0; + + + List<ChargingBillListVO> chargingBillListVOS = new ArrayList<>(); for (ChargingBillListVO chargingBillListVO : list) { + if (roleType==2 && chargingBillListVO.getSiteId()!=0){ + chargingBillListVOS.add(chargingBillListVO); + } + if (roleType ==1 && (siteIds.contains(chargingBillListVO.getSiteId())|| chargingBillListVO.getSiteId()==0)){ + chargingBillListVOS.add(chargingBillListVO); + } + } + for (ChargingBillListVO chargingBillListVO : chargingBillListVOS) { + if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){ + continue; + } + if (roleType == 2){ + // 校验有没有这个站点的权限 + List<Boolean> t1= partnerClient.getChargingBillMenu(sysUser.getObjectId(),chargingBillListVO.getSiteId()).getData(); + chargingBillListVO.setAuthDownLoad(t1.get(0)); + if (chargingBillListVO.getSiteId()==0){ + continue; + } + } String temp = ""; String temp1 = ""; switch (chargingBillListVO.getType()){ @@ -457,7 +610,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); @@ -474,28 +627,18 @@ chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 -// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); - // todo 临时修改为查询昨天的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); // 账单周期 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()); - // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 - 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()); + 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"); @@ -504,6 +647,7 @@ BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal chargingCapacity = new BigDecimal("0"); + BigDecimal refundAmount = new BigDecimal("0"); chargingBillVO.setCategory(""); chargingBillListVO.setOrderCount(tChargingOrders.size()); chargingBillVO.setExportList(tChargingOrders); @@ -519,12 +663,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()); @@ -571,18 +712,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.getTime_remaining()!=null){ - chargingSecond+=data5.getTime_remaining()*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("小时"); @@ -594,28 +735,26 @@ 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()); } + }else{ + tChargingOrder.setLicensePlate(tChargingOrder.getPlateNum()); } if (data3!=null)tChargingOrder.setUserName(data3.getName()); - // 累加实收金额 支付金额减去退款金额 - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - - }else if (tChargingOrder.getPaymentAmount()!=null){ + if ( tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); } - // 累加订单金额 - if (tChargingOrder.getOrderAmount()!=null){ - orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); + // 总金额 + if (tChargingOrder.getRechargeAmount()!=null){ + orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ @@ -630,7 +769,8 @@ } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006))); + commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(BigDecimal.valueOf(0.006)) + .setScale(2,BigDecimal.ROUND_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ @@ -648,20 +788,20 @@ // 格式化为字符串 String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds); chargingBillVO.setChargingTime(timeString); + chargingBillListVO.setOrderAmount(paymentAmount); - chargingBillListVO.setPaymentAmount(paymentAmount); - chargingBillListVO.setOrderAmount(orderAmount); + chargingBillListVO.setPaymentAmount(paymentAmount.subtract(sharingAmount).setScale(2,BigDecimal.ROUND_DOWN)); chargingBillListVO.setElectrovalence(electrovalence); - chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,RoundingMode.HALF_DOWN)); - chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,RoundingMode.HALF_DOWN)); - chargingBillListVO.setSharingAmount(sharingAmount.setScale(2,RoundingMode.HALF_DOWN)); + chargingBillListVO.setServiceCharge(serviceCharge.setScale(2,BigDecimal.ROUND_DOWN)); + chargingBillListVO.setCommissionAmount(commissionAmount.setScale(2,BigDecimal.ROUND_DOWN)); + chargingBillListVO.setSharingAmount(sharingAmount.setScale(2,BigDecimal.ROUND_DOWN)); chargingBillListVO.setChargingCapacity(chargingCapacity); switch (chargingBillListVO.getType()){ case 1: 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()); } @@ -673,8 +813,13 @@ chargingBillListVO.setChargingSecond(chargingSecond); } for (ChargingBillListVO chargingBillListVO : list1) { - if (chargingBillListVO.getType() ==1){ + if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){ continue; + } + if (roleType == 2){ + if (chargingBillListVO.getSiteId()==0){ + continue; + } } LocalDateTime billTime = chargingBillListVO.getBillTime(); // 将其转化为yyyy-MM格式字符串 @@ -684,28 +829,19 @@ chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 -// LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); - // todo 临时修改为查询昨天的充电订单 - LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); + LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); +// LocalDateTime localDate = chargingBillListVO.getBillTime().minusDays(1); // 账单周期 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()); - // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 - 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()); + 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"); @@ -717,18 +853,14 @@ chargingBillListVO.setOrderCount(tChargingOrders.size()); for (TChargingOrder tChargingOrder : tChargingOrders) { // 累加实收金额 支付金额减去退款金额 - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); - - }else if (tChargingOrder.getPaymentAmount()!=null){ + if (tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加订单金额 - if (tChargingOrder.getOrderAmount()!=null){ - orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); - orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); + if (tChargingOrder.getRechargeAmount()!=null){ + orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount()); + orderAmountTotal = orderAmountTotal.add(tChargingOrder.getRechargeAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ @@ -736,7 +868,7 @@ electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){ - refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); + refundAmountTotal = refundAmountTotal.add(tChargingOrder.getRefundAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ @@ -745,8 +877,9 @@ } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006"))); - commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getOrderAmount().multiply(new BigDecimal("0.006"))); + commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN)); + commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")) + .setScale(2,BigDecimal.ROUND_DOWN)); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ @@ -768,23 +901,22 @@ } } chargingBillVO.setChargingCapacity(chargingCapacityTotal); - chargingBillVO.setPaymentAmount(paymentAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setOrderAmount(orderAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setElectrovalence(electrovalenceTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setServiceCharge(serviceChargeTotal.setScale(2, RoundingMode.HALF_DOWN)); + chargingBillVO.setPaymentAmount(paymentAmountTotal.subtract(commissionAmountTotal).subtract(sharingAmountTotal).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); - chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, RoundingMode.HALF_DOWN)); - chargingBillVO.setDiscount(discountTotal.setScale(2, RoundingMode.HALF_DOWN)); - pageInfo.setRecords(list); + chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, BigDecimal.ROUND_DOWN)); + chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, BigDecimal.ROUND_DOWN)); + chargingBillVO.setDiscount(discountTotal.setScale(2, BigDecimal.ROUND_DOWN)); + pageInfo.setRecords(chargingBillListVOS); chargingBillVO.setList(pageInfo); return chargingBillVO; } public static void main(String[] args) { - LocalDateTime now = LocalDateTime.now(); - // 将时间转化为字符串 只保留年月日 格式为yyyy-MM-dd - String format = now.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDateTime localDate = LocalDateTime.now().withMonth(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0); + } } -- Gitblit v1.7.1