ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -29,6 +29,8 @@ private String licensePlate; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "uid") private String uid; @ApiModelProperty(value = "时段数") ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -309,13 +309,14 @@ @ResponseBody @PostMapping(value = "/chargingOrderInfo") @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) { TChargingOrder byId = chargingOrderService.getById(orderId); public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) { TChargingOrder byId = chargingOrderService.getById(strategyId); ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO(); chargingOrderInfoVO.setCdElectronic(byId.getCurrent()+""); chargingOrderInfoVO.setCdVoltage(byId.getVoltage()+""); chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()+""); chargingOrderInfoVO.setTotalPower(byId.getPower()+""); chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent()+"":""); chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage()+"":""); chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity()+"":""); chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower()+"":""); if (byId.getAppUserCarId()!=null){ List<TAppUserCar> data = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); if (!data.isEmpty()){ @@ -325,7 +326,7 @@ chargingOrderInfoVO.setVehicleUse(data.get(0).getVehicleUse()); } } List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); chargingOrderInfoVO.setList(list); return AjaxResult.success(chargingOrderInfoVO); } @@ -800,6 +801,7 @@ } List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getStartTime, start).le(TChargingOrder::getEndTime, 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); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -471,7 +471,7 @@ TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); if(null != vipDetail){ Integer chargeNum = vipDetail.getChargeNum(); if(0 > chargeNum){ if(0 < chargeNum){ chargingOrder.setVipDiscount(discount); } } @@ -583,7 +583,7 @@ Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", "")); Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", "")); String[] split = accountingStrategyDetailOrder.getEndTime().split(":"); if(sta || now >= start){ if(sta || (now >= start && now < end)){ sta = true; Calendar end_calendar = Calendar.getInstance(); @@ -605,16 +605,16 @@ //每秒需要支付的服务费金额 BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge()); //计算剩余金额能充多长时间的电 long times = rechargeAmount1.divide(s_server_amount, 0, RoundingMode.DOWN).longValue(); long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue(); if(times > m){ //充电时间跨度两个计费策略,需要继续对下一个策略进行计算 serviceCharge = s_server_amount.multiply(new BigDecimal(m)); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10)))); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(1).subtract(discount)))); rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m))); nowTimeMillis = null; }else{ serviceCharge = s_server_amount.multiply(new BigDecimal(times)); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10)))); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(1).subtract(discount)))); break; } } @@ -1259,6 +1259,7 @@ BigDecimal electronicMoney = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); for (ChargingOrderVO chargingOrderVO : list) { chargingOrderVO.setUid(chargingOrderVO.getId()+""); TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); if (chargingOrderVO.getSiteId()!=null){ @@ -1272,38 +1273,24 @@ } if (chargingOrderVO.getChargingCapacity()!=null){ total = total.add(chargingOrderVO.getChargingCapacity()); total = total.add(chargingOrderVO.getElectricity()); } // 充电订单 明细记录 List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() .eq("charging_order_id", chargingOrderVO.getId())); // 单个订单累计电费 BigDecimal electronicMoney1 = new BigDecimal("0"); // 单个订单累计服务费 BigDecimal serviceMoney1 = new BigDecimal("0"); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData(); if (data5!=null){ chargingOrderVO.setChargingSecond(data5.getCumulative_charging_time()*60L); long l = data5.getCumulative_charging_time() * 60L; chargingOrderVO.setChargingSecond(l); time+=l; } // 总收入 if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){ income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount())); }else{ if (chargingOrderVO.getPaymentAmount()!=null){ income = income.add(chargingOrderVO.getPaymentAmount()); electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()); serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()); income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence())); if (chargingOrderVO.getRefundAmount()!=null){ income = income.subtract(chargingOrderVO.getRefundAmount()); } } for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : chargingOrderId) { // 累计电费 electronicMoney1 = electronicMoney1.add(tChargingOrderAccountingStrategy.getElectrovalence() .multiply(tChargingOrderAccountingStrategy.getChargingCapacity())); electronicMoney = electronicMoney.add(electronicMoney1); // 累计服务费 serviceMoney1 = serviceMoney1.add(tChargingOrderAccountingStrategy.getServiceCharge()); serviceMoney = serviceMoney.add(serviceMoney1); } chargingOrderVO.setServiceCharge(serviceMoney1); chargingOrderVO.setElectrovalence(electronicMoney1); // 充电时段数 int size = chargingOrderId.size(); chargingOrderVO.setCount(size); @@ -1805,7 +1792,7 @@ invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); break; } if(null == invoke || Integer.valueOf(invoke.toString()) == 0){ if(null == invoke || Double.valueOf(invoke.toString()) == 0){ continue; } BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); @@ -1861,7 +1848,7 @@ BigDecimal discountAmount = BigDecimal.ZERO; if(null != chargingOrder.getVipDiscount()){ //服务费折扣 discountAmount = periodServicePrice_total.multiply((new BigDecimal(10).subtract(chargingOrder.getVipDiscount())).divide(new BigDecimal(10))); discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount()))); TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); if(null != appUser.getVipId()){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -272,6 +272,10 @@ .map(TOrderInvoiceDetail::getOrderId).collect(Collectors.toList()); // 将其全部转化为String tOrderInvoiceVO.setIds(collect.stream().map(String::valueOf).collect(Collectors.toList())); TAppUser appUser = appUserClient.getUserById(tOrderInvoiceVO.getAppUserId()).getData(); if (appUser!=null){ tOrderInvoiceVO.setUserPhone(appUser.getPhone()); } } // 查询这个开票的订单ids @@ -293,11 +297,6 @@ e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get()); e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get()); e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get()); if (e.getBillingUserId()!=null){ e.setUserPhone(finalTAppUsers.stream().filter(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone()); } TAppUser appUser = appUserClient.getUserById(e.getAppUserId()).getData(); e.setUserPhone(appUser.getPhone()); }); } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -400,12 +400,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and DATE(create_time) = CURDATE() <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -424,12 +424,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -448,12 +448,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and MONTH(create_time) = MONTH(NOW()) AND YEAR(create_time) = YEAR(NOW()) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -473,12 +473,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and YEAR(create_time) = YEAR(NOW()) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -497,12 +497,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time