| | |
| | | TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); |
| | | if(null != vipDetail){ |
| | | Integer chargeNum = vipDetail.getChargeNum(); |
| | | if(0 > chargeNum){ |
| | | if(0 < chargeNum){ |
| | | chargingOrder.setVipDiscount(discount); |
| | | } |
| | | } |
| | |
| | | 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(); |
| | |
| | | //每秒需要支付的服务费金额 |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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){ |
| | |
| | | |
| | | } |
| | | 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.getTime_remaining()*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); |
| | |
| | | startTime2 = split[1]; |
| | | } |
| | | ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); |
| | | |
| | | if (StringUtils.hasLength(dto.getPhone())){ |
| | | List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); |
| | | if(data!=null){ |
| | | if (!data.isEmpty()){ |
| | | dto.setUserIds(data); |
| | | } |
| | | }else{ |
| | | dto.setUserIds(new ArrayList<Long>()); |
| | | } |
| | | if (dto.getUserIds().isEmpty()){ |
| | | List<Long> carIds = dto.getUserIds(); |
| | | carIds.add(-1L); |
| | | dto.setUserIds(carIds); |
| | | } |
| | | } |
| | | if (StringUtils.hasLength(dto.getPhone())){ |
| | | List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData(); |
| | | if(data!=null){ |
| | | if (!data.isEmpty()){ |
| | | dto.setCarIds(data); |
| | | } |
| | | }else{ |
| | | dto.setCarIds(new ArrayList<Long>()); |
| | | } |
| | | if (dto.getCarIds().isEmpty()){ |
| | | List<Long> carIds = dto.getCarIds(); |
| | | carIds.add(-1L); |
| | | dto.setCarIds(carIds); |
| | | } |
| | | } |
| | | 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) { |
| | |
| | | // 获取开始SOC 结束soc |
| | | if (chargingOrderListVO.getCode()!=null){ |
| | | List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData(); |
| | | if (!data6.isEmpty()){ |
| | | if (data6!=null && !data6.isEmpty()){ |
| | | // 第一条数据soc为开始 最后一条数据soc为结束soc |
| | | chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString()); |
| | | chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString()); |
| | |
| | | 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()); |
| | |
| | | BigDecimal discountAmount = BigDecimal.ZERO; |
| | | if(null != chargingOrder.getVipDiscount()){ |
| | | //服务费折扣 |
| | | discountAmount = periodServicePrice_total.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())); |
| | | discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount()))); |
| | | |
| | | TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); |
| | | if(null != appUser.getVipId()){ |
| | |
| | | public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) { |
| | | return this.baseMapper.usersByQuery(statisticsQueryDto); |
| | | } |
| | | @Override |
| | | public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) { |
| | | return this.baseMapper.usersByQuery(statisticsQueryDto); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getUserTagCount() { |