| | |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; |
| | | import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient; |
| | | import com.ruoyi.integration.api.feignClient.SendMessageClient; |
| | | import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; |
| | |
| | | import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; |
| | | import com.ruoyi.integration.api.feignClient.*; |
| | | import com.ruoyi.integration.api.model.*; |
| | | import com.ruoyi.integration.api.vo.ChargingOrderVo; |
| | | import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply; |
| | | import com.ruoyi.integration.api.vo.StartChargeResult; |
| | | import com.ruoyi.order.api.dto.SettlementConfirmAdd; |
| | |
| | | import com.ruoyi.order.service.TChargingOrderService; |
| | | import com.ruoyi.order.service.TOrderEvaluateService; |
| | | import com.ruoyi.order.service.*; |
| | | import com.ruoyi.order.util.RedisLock; |
| | | import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService; |
| | | import com.ruoyi.order.util.mongodb.service.TransactionRecordService; |
| | | import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; |
| | | import com.ruoyi.order.vo.EndOfChargePageInfo; |
| | | import com.ruoyi.order.vo.OrderCountByDate; |
| | | import com.ruoyi.order.vo.StatisticsOfBatteryVO; |
| | |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import org.redisson.Redisson; |
| | | import org.redisson.api.RLock; |
| | | import org.redisson.api.RedissonClient; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | |
| | | private RedisService redisService; |
| | | |
| | | @Resource |
| | | private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; |
| | | private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; |
| | | |
| | | @Resource |
| | | private TCECClient tcecClient; |
| | |
| | | private AccountingStrategyClient accountingStrategyClient; |
| | | |
| | | @Resource |
| | | private PlatformStartChargingReplyClient platformStartChargingReplyClient; |
| | | private PlatformStartChargingReplyService platformStartChargingReplyService; |
| | | |
| | | @Resource |
| | | private TChargingOrderRefundService chargingOrderRefundService; |
| | |
| | | @Resource |
| | | private SecurityDetectionClient securityDetectionClient; |
| | | |
| | | @Resource |
| | | private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient; |
| | | |
| | | //计数器 |
| | | private Map<String, Integer> counter_map = new HashMap<>(); |
| | | |
| | |
| | | private OperatorClient operatorClient; |
| | | |
| | | @Resource |
| | | private TransactionRecordClient transactionRecordClient; |
| | | private TransactionRecordService transactionRecordService; |
| | | |
| | | @Resource |
| | | private ITChargingOrderSummaryDataService chargingOrderSummaryDataService; |
| | | @Resource |
| | | private TOrderAppealService orderAppealService; |
| | | |
| | | @Autowired |
| | | private RedissonClient redissonClient; |
| | | |
| | | @Resource |
| | | private ChargingMessageClient chargingMessageClient; |
| | | |
| | | |
| | | /** |
| | | * 获取小程序充电记录列表数据 |
| | | * |
| | | * @param query |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 获取充电订单明细 |
| | | * |
| | | * @param id 订单id |
| | | * @return |
| | | */ |
| | |
| | | }else{ |
| | | myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum()); |
| | | } |
| | | if (null != chargingOrder.getStartTime()) { |
| | | myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); |
| | | } |
| | | if (null != chargingOrder.getEndTime()) { |
| | | myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); |
| | | } |
| | | myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount()); |
| | | myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount()); |
| | | myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount()); |
| | |
| | | .orderByAsc(TChargingOrderAccountingStrategy::getStartTime) |
| | | ); |
| | | myChargingOrderInfo.setStageCost(stageCost); |
| | | List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); |
| | | List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); |
| | | if(null != dataList){ |
| | | //在MongoDB中获取数据 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); |
| | |
| | | |
| | | /** |
| | | * 获取待开票订单列表 |
| | | * |
| | | * @param query |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 充电支付 |
| | | * |
| | | * @param addChargingOrder |
| | | * @return |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) { |
| | | Long userId = tokenService.getLoginUserApplet().getUserId(); |
| | | TAppUser appUser = appUserClient.getUserById(userId).getData(); |
| | |
| | | |
| | | //检查当前枪是否是正在使用中 |
| | | TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId()) |
| | | .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0)); |
| | | .in(TChargingOrder::getStatus, Arrays.asList(3)).eq(TChargingOrder::getDelFlag, 0)); |
| | | if(null != one){ |
| | | return AjaxResult.error("充电枪正在充电中,启动失败"); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 支付成功后的回调处理逻辑 |
| | | * |
| | | * @param paymentType 支付方式:1=微信,2=支付宝 |
| | | * @param out_trade_no 业务流水号 |
| | | * @param transaction_id 三方支付流水号 |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) { |
| | | TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no)); |
| | | if(chargingOrder.getRechargePaymentStatus() == 2){ |
| | |
| | | |
| | | /** |
| | | * 定时检测mongodb数据库数据 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | String code = chargingOrder.getCode(); |
| | | String key = "AQJC_" + chargingOrder.getChargingGunId(); |
| | | List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); |
| | | List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code); |
| | | log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString()); |
| | | if(data.size() != 0){ |
| | | PlatformStartChargingReply platformStartChargingReply = data.get(1); |
| | |
| | | |
| | | //清除计时器中的无效数据 |
| | | counter_map.remove(code); |
| | | TChargingOrder order = new TChargingOrder(); |
| | | order.setId(id); |
| | | order.setAppUserId(chargingOrder.getAppUserId()); |
| | | if(0 == startup_result){ |
| | | //启动失败 |
| | | preChargeCheck1.setStartupSuccess(3); |
| | | preChargeCheck1.setFailureCause(failure_cause); |
| | | //启动失败后取消订单,退款操作 |
| | | refund(code); |
| | | order.setStatus(-1); |
| | | order.setEndMode(0); |
| | | chargingOrder.setStatus(-1); |
| | | chargingOrder.setEndMode(0); |
| | | }else{ |
| | | //启动成功 |
| | | preChargeCheck1.setStartupSuccess(2); |
| | | order.setStatus(3); |
| | | order.setStartTime(LocalDateTime.now()); |
| | | chargingOrder.setStatus(3); |
| | | chargingOrder.setStartTime(LocalDateTime.now()); |
| | | } |
| | | this.updateById(order); |
| | | this.updateById(chargingOrder); |
| | | if (chargingOrder.getStatus() == 3) { |
| | | //推送监管平台订单状态 |
| | | new Thread(() -> { |
| | | ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); |
| | | BeanUtils.copyProperties(chargingOrder, chargingOrderVo); |
| | | chargingMessageClient.pushOrderStatus(chargingOrderVo); |
| | | }).start(); |
| | | } |
| | | |
| | | redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); |
| | | //推送三方平台订单状态 |
| | | if(2 == chargingOrder.getOrderSource()){ |
| | |
| | | |
| | | /** |
| | | * 修改安全检测数据 |
| | | * |
| | | * @param securityDetection |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 启动充电应答 |
| | | * |
| | | * @param message |
| | | */ |
| | | @Override |
| | |
| | | } |
| | | redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); |
| | | this.updateById(order); |
| | | |
| | | if (3 == order.getStatus()) { |
| | | //推送监管平台订单状态 |
| | | new Thread(() -> { |
| | | ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); |
| | | BeanUtils.copyProperties(order, chargingOrderVo); |
| | | chargingMessageClient.pushOrderStatus(chargingOrderVo); |
| | | }).start(); |
| | | } |
| | | //推送三方平台启动充电结果 |
| | | if(2 == order.getOrderSource()){ |
| | | StartChargeResult result = new StartChargeResult(); |
| | |
| | | |
| | | /** |
| | | * 启动失败后的退款,取消订单 |
| | | * |
| | | * @param code |
| | | */ |
| | | public void refund(String code){ |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | public void refund1(String code, BigDecimal money){ |
| | | log.info(code + ":-------------------充电成功,执行手动退款-------------------"); |
| | | TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); |
| | |
| | | |
| | | /** |
| | | * 启动失败后微信退款的回调处理 |
| | | * |
| | | * @param out_refund_no |
| | | * @param refund_id |
| | | * @param tradeState |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取充电中的详情 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | |
| | | chargingDetails.setCode(one.getCode()); |
| | | chargingDetails.setStatus(one.getStatus()); |
| | | chargingDetails.setChargingCost(one.getResidualAmount()); |
| | | UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); |
| | | UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode()); |
| | | if(null != data){ |
| | | chargingDetails.setChargeCurrent(data.getOutput_current()); |
| | | chargingDetails.setChargeVoltage(data.getOutput_voltage()); |
| | |
| | | |
| | | /** |
| | | * 停止充电操作 |
| | | * |
| | | * @param id 订单id |
| | | * @return |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public AjaxResult stopCharging(String id) { |
| | | TChargingOrder order = this.getById(id); |
| | | Integer status = order.getStatus(); |
| | |
| | | if(!order.getAppUserId().equals(userId)){ |
| | | return AjaxResult.error("权限不足"); |
| | | } |
| | | TChargingOrder chargingOrder = new TChargingOrder(); |
| | | chargingOrder.setId(Long.valueOf(id)); |
| | | chargingOrder.setAppUserId(order.getAppUserId()); |
| | | chargingOrder.setEndTime(LocalDateTime.now()); |
| | | chargingOrder.setStatus(4); |
| | | chargingOrder.setEndMode(1); |
| | | this.updateById(chargingOrder); |
| | | order.setEndTime(LocalDateTime.now()); |
| | | order.setStatus(4); |
| | | order.setEndMode(1); |
| | | this.updateById(order); |
| | | |
| | | String code1 = order.getCode(); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData(); |
| | | //异步线程处理停机 |
| | |
| | | |
| | | /** |
| | | * 结束充电后处理用户标签数据 |
| | | * |
| | | * @param chargingOrder |
| | | */ |
| | | public void editUserTag(TChargingOrder chargingOrder){ |
| | |
| | | |
| | | /** |
| | | * 推荐奖励(被推荐首单奖励) |
| | | * |
| | | * @param chargingOrder |
| | | */ |
| | | public void referralReward(TChargingOrder chargingOrder){ |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 停止充电应答结果处理 |
| | | * |
| | | * @param platformStopChargingReply |
| | | */ |
| | | @Override |
| | |
| | | this.updateById(chargingOrder); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | } |
| | | // 获取开始SOC 结束soc |
| | | if (chargingOrderListVO.getCode()!=null){ |
| | | List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData(); |
| | | List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode()); |
| | | |
| | | if (data6!=null && !data6.isEmpty()){ |
| | | int min = 100; |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public ChargingOrderListInfoVO chargingInfo(String uid) { |
| | | TChargingOrder chargingOrder= this.getById(uid); |
| | |
| | | |
| | | // 获取开始SOC 结束soc |
| | | if (chargingOrder.getCode()!=null){ |
| | | List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); |
| | | List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); |
| | | if (data6!=null){ |
| | | for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { |
| | | if (uploadRealTimeMonitoringData.getOutput_current()!=null&& |
| | |
| | | |
| | | /** |
| | | * 处理充电订单实时监控数据相关的业务逻辑 |
| | | * |
| | | * @param query |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) { |
| | | if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){ |
| | | //获取当前的计费策略 |
| | |
| | | } |
| | | chargingOrder.setChargingCapacity(query.getCharging_degree()); |
| | | chargingOrder.setElectricity(query.getCharging_degree()); |
| | | chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc())); |
| | | BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder1.getCode()).getData(); |
| | | if(null != data){ |
| | | chargingOrder.setNeedElec(data.getBms_current_requirements()); |
| | | } |
| | | chargingOrder.setTotalElectricity(new BigDecimal(query.getSoc())); |
| | | this.updateById(chargingOrder); |
| | | } |
| | | } |
| | |
| | | |
| | | /** |
| | | * 自动结束充电后的处理逻辑 |
| | | * |
| | | * @param orderCode |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public void endCharge(String orderCode, Integer endMode) { |
| | | TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode)); |
| | | TChargingOrder chargingOrder = new TChargingOrder(); |
| | |
| | | |
| | | /** |
| | | * 异常结束充电处理逻辑 |
| | | * |
| | | * @param orderCode |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 停止充电返回账单后计算费用 |
| | | * |
| | | * @param vo |
| | | */ |
| | | @Override |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | public R endChargeBillingCharge(TransactionRecordMessageVO vo) { |
| | | RLock lock = redissonClient.getLock("endOrder:" + vo.getTransaction_serial_number()); |
| | | boolean tryLock = false; |
| | | try { |
| | | tryLock = lock.tryLock(100, TimeUnit.SECONDS); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | lock.unlock(); |
| | | return R.ok(); |
| | | } |
| | | if (!tryLock) { |
| | | return R.ok(); |
| | | } |
| | | try { |
| | | TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); |
| | | if(null == chargingOrder){ |
| | | return R.ok(); |
| | |
| | | |
| | | //获取订单的计费策略 |
| | | List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData(); |
| | | if (accountingStrategyDetailOrderList.isEmpty()) { |
| | | return R.fail("计费策略为空,无法计算费用"); |
| | | } |
| | | accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59"); |
| | | //开始处理计费明细数据和优惠数据 |
| | | chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())); |
| | | SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>(); |
| | | try { |
| | | //跨天 |
| | | if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){ |
| | | //当天的 |
| | |
| | | lists.add(vo1); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | R.fail("处理失败"); |
| | | } |
| | | |
| | | //开始处理明细 |
| | | for (int i = 0; i < lists.size(); i++) { |
| | |
| | | TChargingOrder order = new TChargingOrder(); |
| | | order.setId(chargingOrder.getId()); |
| | | order.setAppUserId(chargingOrder.getAppUserId()); |
| | | UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); |
| | | UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); |
| | | if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){ |
| | | Integer soc = uploadRealTimeMonitoringData.getSoc(); |
| | | if(soc >= 98){ |
| | |
| | | this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |
| | | summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |
| | | chargingOrderSummaryDataService.save(summaryData); |
| | | |
| | | //推送监管平台订单状态和订单详情 |
| | | ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); |
| | | BeanUtils.copyProperties(chargingOrder, chargingOrderVo); |
| | | chargingMessageClient.pushOrderInfo(chargingOrderVo); |
| | | chargingMessageClient.pushOrderStatus(chargingOrderVo); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | lock.unlock(); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) { |
| | | return this.baseMapper.usersDay(statisticsQueryDto); |
| | |
| | | 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.usersByQuery1(statisticsQueryDto); |
| | |
| | | private TVipOrderService vipOrderService; |
| | | @Resource |
| | | private TVipOrderRefundService vipOrderRefundService; |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 根据车牌号和开始时间查询充电数据 |
| | | * |
| | | * @param query |
| | | * @return |
| | | */ |
| | |
| | | |
| | | @Autowired |
| | | private TChargingOrderService chargingOrderService; |
| | | |
| | | @Override |
| | | public SettlementTotalVO settlementTotal(String time) { |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | |
| | | .divide(subtract2, 2, RoundingMode.HALF_DOWN) |
| | | .multiply(new BigDecimal("100")) |
| | | .setScale(2, RoundingMode.HALF_DOWN); |
| | | tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); } |
| | | tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%"); |
| | | } |
| | | beforeCost = beforeCost.add(settlementConfirm.getCost()); |
| | | beforeIncome = beforeIncome.add(settlementConfirm.getIncome()); |
| | | } |
| | |
| | | res.setList2(total); |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public SettlementTotalVO settlementTotalR(String time,Long userId) { |
| | | //如果没传siteId,获取当前登陆人所有的siteIds |
| | |
| | | .divide(subtract2, 2, RoundingMode.HALF_DOWN) |
| | | .multiply(new BigDecimal("100")) |
| | | .setScale(2, RoundingMode.HALF_DOWN); |
| | | tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); } |
| | | tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%"); |
| | | } |
| | | beforeCost = beforeCost.add(settlementConfirm.getCost()); |
| | | beforeIncome = beforeIncome.add(settlementConfirm.getIncome()); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 获取充电结束页面详情 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 添加三方平台充电订单数据 |
| | | * |
| | | * @param query |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 三方平台停止充电操作 |
| | | * |
| | | * @param startChargeSeq |
| | | * @return |
| | | */ |
| | |
| | | chargingOrder.setStatus(4); |
| | | chargingOrder.setEndMode(1); |
| | | this.updateById(chargingOrder); |
| | | |
| | | tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId()); |
| | | |
| | | String code1 = order.getCode(); |
| | |
| | | |
| | | /** |
| | | * 获取充电后没有扣除费用的数据 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | |
| | | .ne(TChargingOrder::getElectricity, 0).in(TChargingOrder::getStatus, Arrays.asList(4, 5))); |
| | | List<Map<String, Object>> mapList = new ArrayList<>(); |
| | | for (TChargingOrder order : list) { |
| | | TransactionRecord transactionRecord = transactionRecordClient.findTransactionRecord(order.getCode()).getData(); |
| | | TransactionRecord transactionRecord = transactionRecordService.findOne(order.getCode()); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("order", order); |
| | | map.put("transactionRecord", transactionRecord); |
| | |
| | | |
| | | |
| | | /** |
| | | * |
| | | * 手动推送订单给第三方平台 |
| | | * |
| | | * @param code |
| | | * @return |
| | | */ |
| | |
| | | tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public R addChargingOrderSummaryData(){ |
| | |
| | | vo.setCounts(counts); |
| | | return R.ok(vo); |
| | | } |
| | | |
| | | @Override |
| | | public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) { |
| | | |
| | | return this.baseMapper.getSumDegreeBySiteIds(siteIds); |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取启动失败且时间超过1小时的订单 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TChargingOrder> findFailedStartupOrder() { |
| | | return this.baseMapper.findFailedStartupOrder(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取停止中的数据 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TChargingOrder> findStoppedOrder() { |
| | | return this.baseMapper.findStoppedOrder(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取充电中的数据 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TChargingOrder> findChargingOrder() { |
| | | return this.baseMapper.findChargingOrder(); |
| | | } |
| | | } |