From d56e45a6bf3ad11809fbf51dff0dfbe853860d43 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 19 三月 2025 20:56:33 +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/controller/TChargingOrderController.java | 194 +++++++++++++++++++++++++++++------------------ 1 files changed, 119 insertions(+), 75 deletions(-) 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 50c910b..e597599 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 @@ -400,15 +400,38 @@ @GetMapping(value = "/pay/order/charging/details") @ApiOperation(value = "充电明细", tags = {"管理后台-支付订单-订单信息"}) public R<List<TChargingOrderAccountingStrategy>> chargingDetail(Long orderId) { - List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); + TChargingOrder chargingOrder = chargingOrderService.getById(orderId); + List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId) + .orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) { - String format = tChargingOrderAccountingStrategy.getCreateTime().format(formatter); + LocalDateTime createTime = chargingOrder.getStartTime(); + String format = createTime.format(formatter); + String startTime = tChargingOrderAccountingStrategy.getStartTime(); + if("00:00".equals(startTime)){ + createTime = createTime.plusDays(1); + format = createTime.format(formatter); + } tChargingOrderAccountingStrategy.setStartTime(format+" "+tChargingOrderAccountingStrategy.getStartTime()); tChargingOrderAccountingStrategy.setEndTime(format+" "+tChargingOrderAccountingStrategy.getEndTime()); } - - + //从新排序 + list.sort(new Comparator<TChargingOrderAccountingStrategy>() { + @Override + public int compare(TChargingOrderAccountingStrategy o1, TChargingOrderAccountingStrategy o2) { + String startTime = o1.getStartTime(); + String startTime1 = o2.getStartTime(); + LocalDateTime localDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime localDateTime1 = LocalDateTime.parse(startTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + if(localDateTime.isBefore(localDateTime1)){ + return -1; + } + if(localDateTime.isAfter(localDateTime1)){ + return 1; + } + return 0; + } + }); return R.ok(list); } @@ -522,8 +545,6 @@ } - - @RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/chargingOrderInfo") @@ -550,27 +571,15 @@ List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) { - String format = ""; - String format1 = ""; -// String temp1=list.get(0).getStartTime().split(":")[0]; - System.err.println("订单详情时间第一条"+list.get(0).getStartTime()); - System.err.println("订单详情时间开始"+tChargingOrderAccountingStrategy.getStartTime()); - System.err.println("订单详情时间结束"+tChargingOrderAccountingStrategy.getEndTime()); - String temp1=list.get(0).getStartTime().split(" ")[1].split(":")[0]; - String[] split = tChargingOrderAccountingStrategy.getStartTime().split(" ")[1].split(":"); - if (Integer.parseInt(split[0])>=Integer.valueOf(temp1)){ - format = byId.getCreateTime().format(formatter); - }else { - format = byId.getEndTime().format(formatter); - } - String[] split1 = tChargingOrderAccountingStrategy.getEndTime().split(" ")[1].split(":"); - if (Integer.parseInt(split1[0])<Integer.valueOf(temp1)){ - format1 = byId.getCreateTime().format(formatter); - }else { - format1 = byId.getEndTime().format(formatter); + LocalDateTime createTime = byId.getStartTime(); + String format = createTime.format(formatter); + String startTime = tChargingOrderAccountingStrategy.getStartTime(); + if("00:00".equals(startTime)){ + createTime = createTime.plusDays(1); + format = createTime.format(formatter); } tChargingOrderAccountingStrategy.setStartTime(format+" "+tChargingOrderAccountingStrategy.getStartTime()); - tChargingOrderAccountingStrategy.setEndTime(format1+" "+tChargingOrderAccountingStrategy.getEndTime()); + tChargingOrderAccountingStrategy.setEndTime(format+" "+tChargingOrderAccountingStrategy.getEndTime()); if (byId.getVipDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){ BigDecimal multiply = byId.getVipDiscountAmount().divide(byId.getServiceCharge(), 2) .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); @@ -582,6 +591,23 @@ tChargingOrderAccountingStrategy.setCouponDiscount(multiply); } } + //从新排序 + list.sort(new Comparator<TChargingOrderAccountingStrategy>() { + @Override + public int compare(TChargingOrderAccountingStrategy o1, TChargingOrderAccountingStrategy o2) { + String startTime = o1.getStartTime(); + String startTime1 = o2.getStartTime(); + LocalDateTime localDateTime = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + LocalDateTime localDateTime1 = LocalDateTime.parse(startTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); + if(localDateTime.isBefore(localDateTime1)){ + return -1; + } + if(localDateTime.isAfter(localDateTime1)){ + return 1; + } + return 0; + } + }); chargingOrderInfoVO.setList(list); return AjaxResult.success(chargingOrderInfoVO); } @@ -1027,13 +1053,16 @@ } + + + + @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/six/total") @ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"}) public R<Map<String,Object>> total() { //count近6个月的数据 - LocalDate sixBefore = PreviousSixMonths.get(); Long userId = tokenService.getLoginUser().getUserid(); //获取当前登录的siteIds List<Integer> siteIds = new ArrayList<>(); @@ -1045,31 +1074,42 @@ if (siteIds.isEmpty()){ siteIds.add(-1); } - Map<String,Object> map = chargingOrderService.countAll(sixBefore,siteIds); - BigDecimal data = parkingLotClient.getRecordAmount(sixBefore).getData(); + Map<String,Object> map = chargingOrderService.countAll(siteIds); + BigDecimal data = parkingLotClient.getRecordAmount().getData(); if (map ==null){ map = new HashMap<String,Object>(); } map.put("parkingAmount",data); - BigDecimal data1 = shoppingOrderService.getSumAmount(sixBefore); + BigDecimal data1 = shoppingOrderService.getSumAmount(); map.put("shopAmount",data1); - BigDecimal data2 = vipOrderService.getSumAmout(sixBefore); + BigDecimal data2 = vipOrderService.getSumAmout(); 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")); + List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getStatus, 5).eq(TChargingOrder::getDelFlag, 0) + .eq(TChargingOrder::getRechargePaymentStatus, 2).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{ - serviceCharge = serviceCharge.add(chargingOrder.getServiceCharge()); + 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); } @@ -1136,7 +1176,11 @@ if (chargingOrderVO != null) { BeanUtils.copyProperties(chargingOrderVO, dataDto); } + BeanUtils.copyProperties(uploadRealTimeMonitoringData, dataDto); + if (chargingOrderVO != null && chargingOrderVO.getOrderSource()==2){ + dataDto.setPeriod_service_price(uploadRealTimeMonitoringData.getPeriod_service_price().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_DOWN))); + } dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime()); dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime()); dataDto.setStatus(uploadRealTimeMonitoringData.getStatus()); @@ -1214,38 +1258,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(); @@ -1253,15 +1284,11 @@ 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(chargingOrderIds); + List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end, siteIds); if (statisticsQueryDto.getDayType()==1){ - List<Map<String,Object>> maps1 = chargingOrderService.getDateData(chargingOrderIds); + List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end, siteIds); List<Map<String, Object>> charMap = new ArrayList<>(); // 生成从 "00:00" 到 "23:00" 的时间数据 @@ -1285,10 +1312,7 @@ tCharingOrderMapVO.setMaps1(charMap); }else if (statisticsQueryDto.getDayType()==2){ - - - - List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(chargingOrderIds); + List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(start,end, siteIds); LocalDate startDate = statisticsQueryDto.getStartTime(); LocalDate endDate = statisticsQueryDto.getEndTime(); @@ -1318,7 +1342,7 @@ } tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==3){ - List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(chargingOrderIds); + List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(start,end, siteIds); LocalDate startDate = statisticsQueryDto.getStartTime(); LocalDate endDate = statisticsQueryDto.getEndTime(); @@ -1348,7 +1372,7 @@ } tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==4){ - List<Map<String,Object>> maps1 = chargingOrderService.getYearData(chargingOrderIds); + List<Map<String,Object>> maps1 = chargingOrderService.getYearData(start,end, siteIds); LocalDate startDate = statisticsQueryDto.getStartTime(); LocalDate endDate = statisticsQueryDto.getEndTime(); @@ -1379,7 +1403,7 @@ } tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==5){ - List<Map<String,Object>> maps1 = chargingOrderService.getByDate(chargingOrderIds); + List<Map<String,Object>> maps1 = chargingOrderService.getByDate(start,end, siteIds); LocalDate startDate = statisticsQueryDto.getStartTime(); LocalDate endDate = statisticsQueryDto.getEndTime(); @@ -1839,18 +1863,36 @@ 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(TChargingOrder::getDelFlag, 0) + .eq(TChargingOrder::getRechargePaymentStatus, 2) .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); @@ -2258,4 +2300,6 @@ return chargingOrderService.getNotPaymentChargingOrder(); } + + } -- Gitblit v1.7.1