From c0af59d13f40da17daafe08be5923c26411e9f71 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 20 三月 2025 15:31:48 +0800 Subject: [PATCH] 修改报表bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 377 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 260 insertions(+), 117 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 ef31a30..15274c2 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 @@ -1,4 +1,5 @@ package com.ruoyi.order.controller; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import java.math.BigDecimal; @@ -11,6 +12,7 @@ import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.Site; @@ -52,11 +54,15 @@ import com.ruoyi.order.service.*; import com.ruoyi.order.util.PreviousSixMonths; import com.ruoyi.order.vo.EndOfChargePageInfo; +import com.ruoyi.other.api.feignClient.RoleSiteClient; +import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.AliQueryOrder; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.feignClient.SysUserRoleClient; +import com.ruoyi.system.api.model.SysUserRoleVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -146,6 +152,14 @@ @Resource private SysUserClient sysUserClient; + @Resource + private UserSiteClient userSiteClient; + + @Resource + private RoleSiteClient roleSiteClient; + @Resource + private SysUserRoleClient sysUserRoleClient; + @@ -209,16 +223,19 @@ if (siteIds.isEmpty()){ siteIds.add(-1); } - + List<TChargingOrder> list = chargingOrderService.list(); + List<TParkingRecord> parkingRecord = parkingLotClient.getSiteIdAll().getData(); for (PayOrderDto record : data.getRecords()) { if (record.getType() == 1){ - TChargingOrder byId = chargingOrderService.getById(record.getId()); - record.setSiteId(byId.getSiteId()); + TChargingOrder chargingOrder = list.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); + if (chargingOrder!=null){ + record.setSiteId(chargingOrder.getSiteId()); + } } if (record.getType()==4){ - Integer siteId=parkingLotClient.getSiteIdByOrderId(Long.valueOf(record.getId())).getData(); - if (siteId!=null){ - record.setSiteId(siteId); + TParkingRecord tParkingRecord = parkingRecord.stream().filter(e -> e.getId().equals(Long.valueOf(record.getId()))).findFirst().orElse(null); + if (tParkingRecord!=null){ + record.setSiteId(tParkingRecord.getSiteId()); } } if (roleType==1||(record.getType()!=1&&record.getType()!=4)){ @@ -235,6 +252,9 @@ data.setRecords(res1); return R.ok(data); } + + + public static List<PayOrderDto> testing5(long total, long current, long size, List<PayOrderDto> str){ List<PayOrderDto> result = new ArrayList<>(); //获取初始化分页结构 @@ -256,6 +276,9 @@ } return result; } + + + @ResponseBody @PostMapping(value = "/pay/order/refund") @ApiOperation(value = "退款", tags = {"管理后台-支付订单-订单信息"}) @@ -326,6 +349,10 @@ return R.ok(); } + + + + @ResponseBody @GetMapping(value = "/pay/order/refund/detail") @ApiOperation(value = "退款信息", tags = {"管理后台-支付订单-订单信息"}) @@ -386,15 +413,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); } @@ -454,6 +504,10 @@ return refundList1; } + + + + public static List<TChargingOrderRefund> testing4(long total, long current, long size, List<TChargingOrderRefund> str){ List<TChargingOrderRefund> result = new ArrayList<>(); //获取初始化分页结构 @@ -475,6 +529,10 @@ } return result; } + + + + @ResponseBody @PostMapping(value = "/pay/order/refund/list1") @ApiOperation(value = "列表1", tags = {"管理后台-支付订单-退款订单"}) @@ -498,8 +556,8 @@ TCharingOrderVO res = chargingOrderService.chargingOrder(dto); return AjaxResult.success(res); } - - + + @RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR) @ResponseBody @GetMapping(value = "/chargingOrderInfo") @@ -526,7 +584,13 @@ 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 = tChargingOrderAccountingStrategy.getCreateTime().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(format+" "+tChargingOrderAccountingStrategy.getEndTime()); if (byId.getVipDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){ @@ -540,10 +604,30 @@ 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); } + + + @ResponseBody @PostMapping(value = "/addEvaluate") @ApiOperation(value = "添加评价", tags = {"小程序-扫一扫"}) @@ -552,6 +636,9 @@ orderEvaluateService.addOrderEvaluate(dto); return AjaxResult.success(); } + + + /** * 查询用户最近一次充电记录使用的车辆 * @@ -571,6 +658,9 @@ return R.ok(-1L); } } + + + /** * 查询会员在本月有多少次享受了充电折扣 @@ -585,6 +675,8 @@ .between(TChargingOrder::getStartTime, req.getStartTime(), req.getEndTime())).size(); return R.ok(size); } + + //用户订单数量 @PostMapping(value = "/useOrderCount") public R<Long> useOrderCount(@RequestParam("userId") Long userId) { @@ -593,11 +685,15 @@ return R.ok(count); } + + //订单详情 @PostMapping(value = "/detail") public R<TChargingOrder> detail(@RequestParam("orderId") Long orderId) { return R.ok(chargingOrderService.getById(orderId)); } + + @PostMapping(value = "/getList") public R<List<TChargingOrder>> getList(@RequestParam("siteId") Integer siteId) { @@ -606,14 +702,16 @@ return R.ok(list); } + + @PostMapping(value = "/getBySiteIdAndTime") public R<List<ChargingOrderGroup>> getBySiteIdAndTime(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto) { List<ChargingOrderGroup> groups = chargingOrderService.chargingOrderGroup(chargingPercentProvinceDto); return R.ok(groups); } - - + + /** * 根据站点id和时间区间查询订单数据 * @param chargingPercentProvinceDto @@ -631,8 +729,8 @@ .eq(StringUtils.isNotEmpty(tripartitePlatformName), TChargingOrder::getTripartitePlatformName, tripartitePlatformName)); return R.ok(list); } - - + + /** * 根据充电枪id获取正在进行中的订单 @@ -738,6 +836,18 @@ /** + * + * @param code + */ + @ResponseBody + @PostMapping(value = "/refund") + public R refund(@RequestParam(value = "code") String code){ + chargingOrderService.refund(code); + return R.ok(); + } + + + /** * 远程启动失败后退款回调 */ @ResponseBody @@ -806,17 +916,11 @@ * @param vo */ @PostMapping("/endChargeBillingCharge") - public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){ + public R endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){ log.info("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo); - chargingOrderService.endChargeBillingCharge(vo); + return chargingOrderService.endChargeBillingCharge(vo); } - - -// @PostMapping("/endChargeBillingCharge1") -// public void endChargeBillingCharge1(@RequestBody TransactionRecordMessageVO vo){ -// log.info("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo); -// chargingOrderService.endChargeBillingCharge1(vo); -// } + @@ -962,13 +1066,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<>(); @@ -980,19 +1087,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().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); + if(2 != order.getOrderSource()){ + totalServiceCharge = totalServiceCharge.add(periodServicePrice); + commissionAmount = commissionAmount.add((periodElectricPrice.add(periodServicePrice)).multiply(new BigDecimal("0.006"))); + }else{ + totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8"))); + sharingAmount = sharingAmount.add(periodServicePrice.multiply(new BigDecimal("0.2"))); + } + } + 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); } @@ -1002,38 +1132,29 @@ @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) { - Long userid = tokenService.getLoginUser().getUserid(); + Set<Integer> ids = null; + //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); - List<Integer> siteIds = new ArrayList<>(); - if (mongoChargingOrderQuery.getSiteId()==null){ - List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData(); - for (GetSiteListDTO datum : data) { - siteIds.add(datum.getId()); - } - }else { - siteIds.add(mongoChargingOrderQuery.getSiteId()); - } - if (siteIds.isEmpty()){ - siteIds.add(-1); + Integer objectId = sysUser.getObjectId(); + R<Integer> admin = sysUserClient.isAdmin(tokenService.getLoginUser().getUserid()); + //合作商 + if(roleType == 2){ + ids = partnerClient.authSite(objectId, SiteMenu.SITE_LIST.getValue()).getData(); }else{ - if (roleType == 2){ - List<Integer> integers = new ArrayList<>(); - for (Integer siteId : siteIds) { - // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.watchChargingOrder(sysUser.getObjectId(),siteId).getData(); - Boolean b = t1.get(1); - if (b){ - integers.add(siteId); - } + //非管理员需要根据角色和用户配置查询允许的站点数据 + //改用roleId=1来判断 + if(admin.getData()!=1){ + List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); + List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); + if(data2.size() > 0){ + List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); + data.addAll(data1); } - siteIds = integers; + ids = new HashSet<>(data); } } - if (siteIds.isEmpty()){ - siteIds.add(-1); - } - mongoChargingOrderQuery.setSiteIds(siteIds); + mongoChargingOrderQuery.setSiteIds(ids); mongoChargingOrderQuery.setPageSize(10); R<UploadRealTimeMonitoringPageData> all = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery); UploadRealTimeMonitoringPageData data1 = all.getData(); @@ -1059,7 +1180,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()); @@ -1137,38 +1262,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(); @@ -1176,15 +1288,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" 的时间数据 @@ -1208,10 +1316,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(); @@ -1241,7 +1346,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(); @@ -1271,7 +1376,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(); @@ -1302,7 +1407,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(); @@ -1338,15 +1443,17 @@ tCharingOrderMapVO.setMaps(maps); BigDecimal allMoney = new BigDecimal(0); + BigDecimal commissionAmount = BigDecimal.ZERO; for (Map<String, Object> map : maps) { BigDecimal periodElectricPrice = (BigDecimal) map.get("period_electric_price"); allMoney = allMoney.add(periodElectricPrice); BigDecimal total_amount = (BigDecimal) map.get("total_amount"); allMoney = allMoney.add(total_amount); + commissionAmount = commissionAmount.add((BigDecimal) map.get("commissionAmount")); } allMoney = allMoney.multiply(new BigDecimal("0.006")); - tCharingOrderMapVO.setAllMoney(allMoney); + tCharingOrderMapVO.setCommissionAmount(commissionAmount); return R.ok(tCharingOrderMapVO); } @@ -1761,21 +1868,37 @@ LocalDateTime min = selectDate.with(LocalTime.MIN); 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).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list(); + List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds) + .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); @@ -1804,7 +1927,7 @@ siteIds.add(statisticsQueryDto.getSiteId()); } if (statisticsQueryDto.getDayType()==1) { - List<Map<String,Object>> charMap1 = chargingOrderService.getHourType(siteIds,statisticsQueryDto); + List<Map<String,Object>> charMap1 = chargingOrderService.getHourType(siteIds,statisticsQueryDto); List<Map<String, Object>> charMap = new ArrayList<>(); // 生成从 "00:00" 到 "23:00" 的时间数据 for (int hour = 0; hour < 24; hour++) { @@ -1931,10 +2054,11 @@ } List<Map<String,Object>> capMap = chargingOrderService.getchargingCapacity(siteIds,statisticsQueryDto); List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); - BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(chargingPiles.size())).multiply(new BigDecimal(24)); + BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add); - //每日利用率=当日充电度数/(总桩数量*桩总功率*24小时) - BigDecimal multiply1 = new BigDecimal(chargingPiles.size()).multiply(totalRatedPower).multiply(new BigDecimal(24)); + //每日利用率=当日充电度数/(桩总功率*24小时) + BigDecimal multiply1 = totalRatedPower.multiply(new BigDecimal(24)); + System.err.println(JSON.toJSONString(capMap) + "---" + chargingPiles.size() + "---" + totalRatedPower + "---" + multiply1); capMap.forEach(map -> { BigDecimal chargingCapacity = (BigDecimal) map.get("chargingCapacity"); BigDecimal result = chargingCapacity.divide(multiply1, 4, RoundingMode.HALF_UP); @@ -2016,7 +2140,8 @@ List<Integer> gunIds = list.stream().map(TChargingOrder::getChargingGunId).collect(Collectors.toList()); return R.ok(gunIds); } - + + /** @@ -2028,6 +2153,8 @@ log.info(code + ":-------------------充电桩自动结束充电-------------------"); chargingOrderService.endCharge(code, 2); } + + /** * 硬件异常结束充电后的处理逻辑 @@ -2050,6 +2177,8 @@ TChargingOrder chargingOrder = chargingOrderService.getChargingOrderByLicensePlate(query); return R.ok(chargingOrder); } + + /** * 修改充电订单 * @param chargingOrder @@ -2100,7 +2229,7 @@ return R.ok(list); } - + /** * 根据车牌号查询指定时间范围内的数据 * @param plateNum @@ -2115,8 +2244,8 @@ .in(TChargingOrder::getStatus, Arrays.asList(4, 5)).between(TChargingOrder::getStartTime, startTime, endTime)); return R.ok(list); } - - + + /** * 添加三方平台充电订单数据 * @return @@ -2125,11 +2254,11 @@ public R addTripartitePlatformOrder(@RequestBody AddTripartitePlatformOrder query){ return chargingOrderService.addTripartitePlatformOrder(query); } - - - - - + + + + + /** * 根据三方平台订单id获取充电数据 * @param startChargeSeq @@ -2140,10 +2269,10 @@ TChargingOrder chargingOrder = chargingOrderService.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getStartChargeSeq, startChargeSeq)); return R.ok(chargingOrder); } - - - - + + + + /** * 根据三方平台订单ids获取充电数据 * @param startChargeSeqs @@ -2154,8 +2283,8 @@ List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().in(TChargingOrder::getStartChargeSeq, startChargeSeqs)); return R.ok(list); } - - + + /** * 三方平台请求停止充电 * @param startChargeSeq @@ -2165,4 +2294,18 @@ public R tripartitePlatformStopCharge(@RequestParam("startChargeSeq") String startChargeSeq){ return chargingOrderService.tripartitePlatformStopCharge(startChargeSeq); } + + + /** + * 临时接口 + * 获取充电后没有扣除费用的数据 + * @return + */ + @GetMapping("/getNotPaymentChargingOrder") + public R getNotPaymentChargingOrder(){ + return chargingOrderService.getNotPaymentChargingOrder(); + } + + + } -- Gitblit v1.7.1