From 74b0e0814e37d640596f44ec86d20fa9ecce9ed6 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 05 二月 2025 10:42:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 228 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 177 insertions(+), 51 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 6361e2a..a20b110 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 @@ -4,13 +4,18 @@ 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; @@ -26,6 +31,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; @@ -38,9 +46,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -53,7 +59,8 @@ */ @Service public class TChargingBillServiceImpl extends ServiceImpl<TChargingBillMapper, TChargingBill> implements TChargingBillService { - + @Resource + private SysUserClient sysUserClient; @Resource private TChargingOrderMapper chargingOrderList; @Resource @@ -70,6 +77,12 @@ 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){ @@ -88,11 +101,48 @@ startTime1 = split[0]; startTime2 = split[1]; } + Long userId = tokenService.getLoginUser().getUserid(); + // 查询当前登陆人按钮权限 + SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); + 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.getAccountMenu(sysUser.getObjectId(),siteId).getData(); + + Boolean b = t1.get(1); + if (b){ + integers.add(siteId); + } + } + siteIds = integers; + } + } + if (siteIds.isEmpty())siteIds.add(-1); + 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()); + BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); BigDecimal refundAmountTotal = new BigDecimal("0"); @@ -103,7 +153,15 @@ BigDecimal chargingCapacityTotal = new BigDecimal("0"); BigDecimal discountTotal = 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()){ @@ -130,22 +188,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); +// 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); + LocalDate firstDayOfMonth = date.withDayOfMonth(1); + // 获取该月份的最后一天 + LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() - .between("create_time", firstDayOfMonth, lastDayOfMonth) + .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) { @@ -343,11 +397,15 @@ chargingBillListVO.setChargingSecond(chargingSecond); } BigDecimal bigDecimal = new BigDecimal("0"); - + int i = 0; for (ChargingBillListVO chargingBillListVO : list1) { - if (chargingBillListVO.getType()==2){ + 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"))); @@ -355,20 +413,15 @@ 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); + // 获取该月份的第一天 + LocalDate firstDayOfMonth = date.withDayOfMonth(1); + // 获取该月份的最后一天 + LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .between("create_time", firstDayOfMonth, lastDayOfMonth) .eq("status", 5) @@ -431,6 +484,7 @@ } } } + chargingBillVO.setOrderCount(i); chargingBillVO.setChargingCapacity(chargingCapacityTotal); chargingBillVO.setPaymentAmount(paymentAmountTotal); chargingBillVO.setOrderAmount(paymentAmountTotal.subtract(refundAmountTotal).subtract(commissionAmountTotal).subtract(sharingAmountTotal)); @@ -450,6 +504,8 @@ chargingBillVO.setList(pageInfo); return chargingBillVO; } + + @Override public ChargingBillVO chargingBillList(ChargingListQuery dto) { if (dto.getState()!=null){ @@ -469,6 +525,49 @@ } PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); + 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); BigDecimal paymentAmountTotal = new BigDecimal("0"); @@ -481,7 +580,29 @@ BigDecimal discountTotal = 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()){ @@ -508,22 +629,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); +// 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); + LocalDate firstDayOfMonth = date.withDayOfMonth(1); + // 获取该月份的最后一天 + LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() - .between("create_time", firstDayOfMonth, lastDayOfMonth) + .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) { @@ -705,8 +822,13 @@ chargingBillListVO.setChargingSecond(chargingSecond); } for (ChargingBillListVO chargingBillListVO : list1) { - if (chargingBillListVO.getType() ==2){ + if (chargingBillListVO.getSiteId()!=0&&!siteIds.contains(chargingBillListVO.getSiteId())){ continue; + } + if (roleType == 2){ + if (chargingBillListVO.getSiteId()==0){ + continue; + } } LocalDateTime billTime = chargingBillListVO.getBillTime(); // 将其转化为yyyy-MM格式字符串 @@ -716,20 +838,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); +// 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); + 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) @@ -805,15 +925,21 @@ 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(list); + 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 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); } } -- Gitblit v1.7.1