From f9e9bd38b2255c5cb201c8ee0123b7dbaec52938 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 22 十月 2024 16:54:06 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 218 ++++++------------------------------------------------ 1 files changed, 26 insertions(+), 192 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 c2500ca..99dbb12 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 @@ -651,116 +651,10 @@ log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString()); sendMessageClient.platformStartCharging(platformStartCharging); - //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 - Long id = chargingOrder.getId(); - //执行5分钟的定时任务检测 - ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - scheduler.scheduleAtFixedRate(()->{ - if(timingDetection(id)){ - scheduler.shutdown(); - } - }, 5, 1, TimeUnit.SECONDS); return AjaxResult.success(); } - - /** - * 定时检测mongodb数据库数据 - * @param id - * @return - */ - public boolean timingDetection(Long id){ - TChargingOrder chargingOrder = this.getById(id); - if(chargingOrder.getStatus() != 2){ - return true; - } - String code = chargingOrder.getCode(); - String key = "AQJC_" + chargingOrder.getChargingGunId(); - //获取安全校验 - com.ruoyi.integration.api.model.SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData(); - if(null != securityDetection){ - PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId()); - if(null != preChargeCheck1){ - preChargeCheck1.setElectronicLockLock(true); - preChargeCheck1.setInsulationTesting(true); - preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1); - preChargeCheck1.setStartupSuccess(1); - redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); - } - } - - List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); - if(null == data){ - return false; - } - log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString()); - if(data.size() != 0){ - PlatformStartChargingReply platformStartChargingReply = data.get(1); - Integer startup_result = platformStartChargingReply.getStartup_result(); - Integer failure_cause = platformStartChargingReply.getFailure_cause(); - Integer counter = counter_map.get(code); - PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); - //5分钟内还未插枪则取消充电,退回金额。 - if(failure_cause == 5 && (null == counter || counter < 300)){ - counter = (null == counter ? 0 : counter) + 1; - counter_map.put(code, counter); - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(failure_cause); - redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); - return false; - } - - //清除计时器中的无效数据 - counter_map.remove(code); - TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); - if(0 == startup_result){ - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(failure_cause); - //启动失败后取消订单,退款操作 - refund(code); - order.setStatus(-1); - order.setEndMode(0); - }else{ - //启动成功 - preChargeCheck1.setStartupSuccess(2); - order.setStatus(3); - order.setStartTime(LocalDateTime.now()); - } - this.updateById(order); - redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); - return true; - }else{ - Integer counter = boot_failed_map.get(code); - log.error(code + ":-------------------未上传开启充电结果-------------------" + counter); - PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); - //5分钟内未启动成功,退回金额。 - if(null == counter || counter < 300){ - counter = (null == counter ? 0 : counter) + 1; - boot_failed_map.put(code, counter); - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(0); - redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); - return false; - } - - //清除计时器中的无效数据 - boot_failed_map.remove(code); - TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); - //启动失败 - preChargeCheck1.setStartupSuccess(3); - preChargeCheck1.setFailureCause(0); - //启动失败后取消订单,退款操作 - refund(code); - order.setStatus(-1); - order.setEndMode(0); - this.updateById(order); - redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); - return true; - } - } + /** @@ -918,21 +812,21 @@ chargingDetails.setId(one.getId().toString()); TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData(); TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData(); - Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0); - chargingDetails.setName(site.getName() + "-" + chargingPile.getName()); - chargingDetails.setCode(one.getCode()); - chargingDetails.setStatus(one.getStatus()); - chargingDetails.setChargingCost(one.getResidualAmount()); - UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); - if(null != data){ - chargingDetails.setChargeCurrent(data.getOutput_current()); - chargingDetails.setChargeVoltage(data.getOutput_voltage()); - BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000)); - chargingDetails.setChargePower(power); - chargingDetails.setCompletionRatio(data.getSoc()); - chargingDetails.setRemainingChargeTime(data.getTime_remaining()); - chargingDetails.setChargedDegrees(data.getCharging_degree()); - Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60); + Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0); + chargingDetails.setName(site.getName() + "-" + chargingPile.getName()); + chargingDetails.setCode(one.getCode()); + chargingDetails.setStatus(one.getStatus()); + chargingDetails.setChargingCost(one.getResidualAmount()); + UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); + if(null != data){ + chargingDetails.setChargeCurrent(data.getOutput_current()); + chargingDetails.setChargeVoltage(data.getOutput_voltage()); + BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000)); + chargingDetails.setChargePower(power); + chargingDetails.setCompletionRatio(data.getSoc()); + chargingDetails.setRemainingChargeTime(data.getTime_remaining()); + chargingDetails.setChargedDegrees(data.getCharging_degree()); + Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60); Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60); chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m)); } @@ -982,70 +876,6 @@ sendMessageClient.platformStopCharging(platformStopCharging); log.error(code1 + ":-------------------远程停止充电请求-------------------"); log.error(platformStopCharging.toString()); - //开始查询停机应答,成功后开始计费费用 - boolean stop_status = false; - for (int i = 0; i < 60; i++) { - TChargingOrder chargingOrder1 = this.getById(id); - if(chargingOrder1.getStatus() != 3){ - stop_status = true; - break; - } - GetPlatformStopChargingReply query = new GetPlatformStopChargingReply(); - query.setCharging_gun_code(chargingGun.getCode()); - query.setCharging_pile_code(chargingPile.getCode()); - - //将时间转换成UTC时间后查询数据(mongodb存储时间以UTC格式存储) - ZoneId zoneId = ZoneId.systemDefault(); - ZonedDateTime zonedDateTime = ZonedDateTime.of(chargingOrder.getEndTime(), zoneId); - ZonedDateTime endTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")); - query.setEnd_time(endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - PlatformStopChargingReply reply = platformStopChargingReplyClient.getPlatformStopChargingReply(query).getData(); - log.error(code1 + ":-------------------查询远程停止充电应答-------------------"); - if(null == reply){ - log.error(code1 + ":-------------------远程停止充电应答无数据-------------------"); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - continue; - } - log.error(reply.toString()); - - if(0 == reply.getStop_result()){ - String failure_cause = ""; - switch (reply.getFailure_cause()){ - case 0: - failure_cause = "无"; - break; - case 1: - failure_cause = "设备编号不匹配"; - break; - case 2: - failure_cause = "枪未处于充电状态"; - break; - case 3: - failure_cause = "其他"; - break; - } - log.error(code1 + ":停机失败:订单号:{},失败原因:{}", chargingOrder.getCode(), failure_cause); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - }else{ - log.error(code1 + ":-------------------远程停止充电请求成功-------------------"); - stop_status = true; - break; - } - } - if(stop_status){ - chargingOrder.setEndMode(1); - this.updateById(chargingOrder); - }else{ - log.error(code1 + ":-------------------远程停止充电应答最终失败-------------------"); - } }); return AjaxResult.success(); } @@ -1721,8 +1551,11 @@ public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) { if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){ //获取当前的计费策略 - TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number())); - BigDecimal residualAmount = chargingOrder.getRechargeAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount()); + TChargingOrder chargingOrder1 = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number())); + BigDecimal residualAmount = chargingOrder1.getRechargeAmount().add(chargingOrder1.getVipDiscountAmount()).subtract(query.getPaid_amount()); + TChargingOrder chargingOrder = new TChargingOrder(); + chargingOrder.setId(chargingOrder1.getId()); + chargingOrder.setAppUserId(chargingOrder1.getAppUserId()); chargingOrder.setResidualAmount(residualAmount); if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){ BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000)); @@ -1732,11 +1565,12 @@ chargingOrder.setPower(divide); chargingOrder.setNeedElec(query.getOutput_current()); - TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + TChargingGun chargingGun = new TChargingGun(); + chargingGun.setId(chargingOrder1.getChargingGunId()); chargingGun.setChargingPower(divide); - chargingGun.setSoc(query.getSoc()); chargingGunClient.updateChargingGunById(chargingGun); } + chargingOrder.setChargingCapacity(query.getCharging_degree()); chargingOrder.setElectricity(query.getCharging_degree()); chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc())); this.updateById(chargingOrder); @@ -1963,10 +1797,10 @@ chargingOrder = this.getById(order.getId()); // 将枪状态重置为空闲 - TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + TChargingGun chargingGun = new TChargingGun(); + chargingGun.setId(chargingOrder.getChargingGunId()); chargingGun.setStatus(2); chargingGun.setChargingPower(BigDecimal.ZERO); - chargingGun.setSoc(0); chargingGunClient.updateChargingGunById(chargingGun); //添加积分 -- Gitblit v1.7.1