From 5f25c762e2853e87fc4b86b157ba87cf1322df2f Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期六, 31 八月 2024 14:53: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/TChargingOrderServiceImpl.java | 187 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 176 insertions(+), 11 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index ad94c84..2eed89a 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -35,6 +35,8 @@ import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.query.ChargingOrderQuery; +import com.ruoyi.order.api.vo.ChargingOrderListVO; +import com.ruoyi.order.api.vo.ChargingOrderTimeVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; import com.ruoyi.order.dto.*; @@ -82,6 +84,10 @@ private AppUserCarClient appUserCarClient; @Resource private AppUserClient appUserClient; + + @Resource + private ChargingPileClient chargingPileClient; + @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @@ -94,9 +100,6 @@ @Resource private AliPaymentClient aliPaymentClient; - - @Resource - private ChargingPileClient chargingPileClient; @Resource @@ -596,6 +599,12 @@ BigDecimal electronicMoney = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); for (ChargingOrderVO chargingOrderVO : list) { + TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); + TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); + if (data2!=null && data3!=null){ + chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName()); + + } if (chargingOrderVO.getChargingCapacity()!=null){ total = total.add(chargingOrderVO.getChargingCapacity()); } @@ -606,14 +615,8 @@ BigDecimal electronicMoney1 = new BigDecimal("0"); // 单个订单累计服务费 BigDecimal serviceMoney1 = new BigDecimal("0"); - LocalDateTime startTime = chargingOrderVO.getStartTime(); - LocalDateTime endTime = chargingOrderVO.getEndTime(); - // 计算时间差 秒 充电时长 - if (startTime!=null && endTime!=null){ - long between = ChronoUnit.SECONDS.between(startTime, endTime); - chargingOrderVO.setChargingSecond(between); - time += between; - } + // todo 调用第三方获取充电时长 秒 + // 总收入 if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){ income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount())); @@ -678,4 +681,166 @@ return R.ok(pageInfo); } + + @Override + public ChargingOrderTimeVO chargingList(ChargingListQuery dto) { + String startTime1 = null; + String startTime2 = null; + String endTime1 = null; + String endTime2 = null; + + if (StringUtils.hasLength(dto.getStartTime())){ + String[] split = dto.getStartTime().split(" - "); + startTime1 = split[0]; + startTime2 = split[1]; + } + if (StringUtils.hasLength(dto.getEndTime())){ + String[] split = dto.getEndTime().split(" - "); + endTime1 = split[0]; + endTime2 = split[1]; + } + ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); + + + PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); + List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); + for (ChargingOrderListVO chargingOrderListVO : list) { + List<Integer> integers = new ArrayList<>(); + integers.add(chargingOrderListVO.getSiteId()); + List<Site> data = siteClient.getSiteByIds(integers).getData(); + if (!data.isEmpty()) { + chargingOrderListVO.setSiteName(data.get(0).getName()); + } + TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData(); + TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData(); + if (data2 != null && data1 != null) { + chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); + } + // todo 充电时长 调用第三方获取 + TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData(); + List<Long> carId = new ArrayList<>(); + if (chargingOrderListVO.getAppUserCarId() != null) { + carId.add(chargingOrderListVO.getAppUserCarId()); + List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData(); + if (!data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate()); + } + if (data3 != null) chargingOrderListVO.setPhone(data3.getPhone()); + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery() + .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list(); + // 尖峰平谷充电量 度数 + BigDecimal jian = new BigDecimal("0"); + BigDecimal feng = new BigDecimal("0"); + BigDecimal ping = new BigDecimal("0"); + BigDecimal gu = new BigDecimal("0"); + BigDecimal total = new BigDecimal("0"); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()) { + case 1: + jian = jian.add(temp.getChargingCapacity()); + break; + case 2: + feng = feng.add(temp.getChargingCapacity()); + break; + case 3: + ping = ping.add(temp.getChargingCapacity()); + break; + case 4: + gu = gu.add(temp.getChargingCapacity()); + break; + } + } + total = total.add(jian).add(feng).add(ping).add(gu); + chargingOrderListVO.setElectronicProportion( + jian.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(尖)/" + +feng.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(峰)/" + +ping.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(平)/" + +gu.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(谷)"); + } + // 不分页 + List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2); + chargingOrderTimeVO.setOrderCount(list1.size()); + // 计算充电总度数 + BigDecimal electronic = new BigDecimal("0"); + // 支付金额 + BigDecimal paymentAmount = new BigDecimal("0"); + // 电费 + BigDecimal electrovalence = new BigDecimal("0"); + // 服务费 + BigDecimal serviceCharge = new BigDecimal("0"); + // 尖峰平谷充电到账 + BigDecimal jianElectronic = new BigDecimal("0"); + BigDecimal fengElectronic = new BigDecimal("0"); + BigDecimal pingElectronic = new BigDecimal("0"); + BigDecimal guElectronic = new BigDecimal("0"); + // 尖峰平谷服务费 + BigDecimal jianService = new BigDecimal("0"); + BigDecimal fengService = new BigDecimal("0"); + BigDecimal pingService = new BigDecimal("0"); + BigDecimal guService = new BigDecimal("0"); + // 尖峰平谷充电量 度数 + BigDecimal jian = new BigDecimal("0"); + BigDecimal feng = new BigDecimal("0"); + BigDecimal ping = new BigDecimal("0"); + BigDecimal gu = new BigDecimal("0"); + for (ChargingOrderListVO chargingOrderListVO : list1) { + electronic = electronic.add(chargingOrderListVO.getChargingCapacity()); + paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount()); + electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence()); + serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge()); + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery() + .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list(); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()){ + case 1: + jian = jian.add(temp.getChargingCapacity()); + jianElectronic = jianElectronic.add(temp.getChargingCapacity()); + jianService = jianService.add(temp.getChargingCapacity()); + break; + case 2: + feng = feng.add(temp.getChargingCapacity()); + fengElectronic = fengElectronic.add(temp.getChargingCapacity()); + fengService = fengService.add(temp.getChargingCapacity()); + break; + case 3: + ping = ping.add(temp.getChargingCapacity()); + pingElectronic = pingElectronic.add(temp.getChargingCapacity()); + pingService = pingService.add(temp.getChargingCapacity()); + break; + case 4: + gu = gu.add(temp.getChargingCapacity()); + guElectronic = guElectronic.add(temp.getChargingCapacity()); + guService = guService.add(temp.getChargingCapacity()); + break; + } + } + } + + chargingOrderTimeVO.setChargingCapacity(electronic); + chargingOrderTimeVO.setPaymentAmount(paymentAmount); + chargingOrderTimeVO.setElectrovalence(electrovalence); + chargingOrderTimeVO.setServiceCharge(serviceCharge); + // 计算尖峰平谷充电量占比 + BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic); + // 计算尖峰平谷服务费占比 + BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService); + // 计算尖峰平谷充电到账占比 + BigDecimal add2 = jian.add(feng).add(ping).add(gu); + chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-" + +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-" + +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-" + +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setList(pageInfo); + return chargingOrderTimeVO; + } } -- Gitblit v1.7.1