Pu Zhibing
12 小时以前 9bc378e6bb9b4563a0dec222e1c2d5d3278632cb
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -52,7 +52,6 @@
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;
@@ -584,6 +583,8 @@
         AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
         BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
         accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
         accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
         accountingStrategyDetailOrder.setDelFlag(false);
         list1.add(accountingStrategyDetailOrder);
      }
      accountingStrategyDetailOrderService.saveBatch(list1);
@@ -940,7 +941,7 @@
         chargingGun.setStatus(4);
         chargingGunClient.updateChargingGunById(chargingGun);
         //推送状态给三方平台
         tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
         tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4);
      }
      redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
      this.updateById(order);
@@ -1289,12 +1290,6 @@
         sendMessageClient.platformStopCharging(platformStopCharging);
         log.info(code1 + ":-------------------远程停止充电请求-------------------");
         log.info(platformStopCharging.toString());
         //推送监管平台订单状态和订单详情
         ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
         BeanUtils.copyProperties(order, chargingOrderVo);
         chargingMessageClient.pushOrderInfo(chargingOrderVo);
         chargingMessageClient.pushOrderStatus(chargingOrderVo);
      });
      //推送三方平台
      if (2 == order.getOrderSource()) {
@@ -1609,42 +1604,7 @@
            
         }
      }
//      List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
//            .eq(TChargingOrderRefund::getRefundStatus,2).list();
      Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2);
//      for (ChargingOrderVO chargingOrderVO : list1) {
//         if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
//            continue;
//         }
//         List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
//         BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
//         BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
//         BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
//         electronicMoney = electronicMoney.add(electronic_reduce);
//         total = total.add(chargingCapacity);
//         if (!chargingOrderVO.getOrderSource().equals(2)) {
//            serviceMoney = serviceMoney.add(service_reduce);
//            paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
//         }else{
//            serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
//            paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
//         }
//         if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
//            LocalDateTime startTime = chargingOrderVO.getStartTime();
//            LocalDateTime endTime = chargingOrderVO.getEndTime();
//            // 计算时间差 单位秒
//            long between = ChronoUnit.SECONDS.between(startTime, endTime);
//            time+=between;
//         }
////         List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
////               .collect(Collectors.toList());
////         for (TChargingOrderRefund tChargingOrderRefund : list2) {
////            refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
////         }
//      }
      if (null != map) {
         tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total"));
         tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time"));
@@ -1832,9 +1792,7 @@
      dto.setSiteIds(siteIds);
      PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize());
      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
      List<Integer> siteIdsList = list.stream().map(ChargingOrderListVO::getSiteId).collect(Collectors.toList());
      if (siteIdsList.isEmpty()) siteIdsList.add(-1);
      List<Site> sites = siteClient.getSiteByIds(siteIdsList).getData();
      List<Site> sites = siteClient.getSiteAll().getData();
      
      for (ChargingOrderListVO chargingOrderListVO : list) {
         if (roleType == 2) {
@@ -2329,6 +2287,10 @@
         return R.ok();
      }
      try {
         Object cacheObject = redisService.getCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number());
         if(null != cacheObject && 5 == (int)cacheObject){
            return R.ok();
         }
         TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
         if (null == chargingOrder) {
            return R.ok();
@@ -2539,31 +2501,28 @@
         //退款金额=充值金额-实际支付金额
         BigDecimal refundAmount = rechargeAmount.subtract(payAmount);
         
         TChargingOrder order = new TChargingOrder();
         order.setId(chargingOrder.getId());
         order.setAppUserId(chargingOrder.getAppUserId());
         UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
         if (null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()) {
            Integer soc = uploadRealTimeMonitoringData.getSoc();
            if (soc >= 98) {
               order.setEndMode(2);
            } else if (chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
               order.setEndMode(3);
               chargingOrder.setEndMode(2);
            } else if (null != chargingOrder.getResidualAmount() && chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) {
               chargingOrder.setEndMode(3);
            } else {
               order.setEndMode(0);
               chargingOrder.setEndMode(1);
            }
         }
         order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
         order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
         order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
         order.setStatus(5);
         order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
         order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
         order.setChargingCapacity(vo.getTotal_electricity());
         order.setElectricity(vo.getTotal_electricity());
         order.setVipDiscountAmount(vipDiscountAmount_total);
         chargingOrder.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
         chargingOrder.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
         chargingOrder.setStatus(5);
         chargingOrder.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setChargingCapacity(vo.getTotal_electricity());
         chargingOrder.setElectricity(vo.getTotal_electricity());
         chargingOrder.setVipDiscountAmount(vipDiscountAmount_total);
         if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) {
            order.setVipDiscount(BigDecimal.valueOf(1));
            chargingOrder.setVipDiscount(BigDecimal.valueOf(1));
         }
         
         //计算优惠券
@@ -2588,9 +2547,9 @@
                  appCoupon.setStatus(2);
                  appCouponClient.updateAppCoupon(appCoupon);
               } else {
                  order.setAppCouponId(null);
                  order.setCouponDiscountAmount(BigDecimal.ZERO);
                  appCouponClient.refund(chargingOrder.getAppCouponId().toString());
                  chargingOrder.setAppCouponId(null);
                  chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
               }
            }
            if (2 == preferentialMode) {
@@ -2610,8 +2569,8 @@
                  appCoupon.setStatus(2);
                  appCouponClient.updateAppCoupon(appCoupon);
               } else {
                  order.setAppCouponId(null);
                  order.setCouponDiscountAmount(BigDecimal.ZERO);
                  chargingOrder.setAppCouponId(null);
                  chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
                  appCouponClient.refund(chargingOrder.getAppCouponId().toString());
               }
            }
@@ -2625,13 +2584,15 @@
         if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) {
            serviceCharge_total = serviceCharge_total.subtract(couponDiscount);
         }
         order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
         order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
         order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
         order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
         order.setRefundStatus(1);
         this.updateById(order);
         chargingOrder = this.getById(order.getId());
         chargingOrder.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setRefundStatus(1);
         this.updateById(chargingOrder);
         redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS);
         chargingOrder = this.getById(chargingOrder.getId());
         
         //推送三方平台
         if (2 == chargingOrder.getOrderSource()) {
@@ -2648,9 +2609,9 @@
         }
         
         //开始将优惠券优惠的金额添加到明细中
         BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
         BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
         if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) {
            List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
            List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
            BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
               BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
@@ -2668,9 +2629,10 @@
         chargingGun.setStatus(2);
         chargingGun.setChargingPower(BigDecimal.ZERO);
         chargingGunClient.updateChargingGunById(chargingGun);
         chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
         //推送状态给三方平台
         if (2 == chargingOrder.getOrderSource()) {
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus());
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
         }
         
         //添加积分
@@ -2807,6 +2769,12 @@
         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 {
@@ -4104,6 +4072,8 @@
         AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
         BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
         accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
         accountingStrategyDetailOrder.setCreateTime(LocalDateTime.now());
         accountingStrategyDetailOrder.setDelFlag(false);
         list1.add(accountingStrategyDetailOrder);
      }
      accountingStrategyDetailOrderService.saveBatch(list1);
@@ -4183,12 +4153,6 @@
         sendMessageClient.platformStopCharging(platformStopCharging);
         log.info(code1 + ":-------------------远程停止充电请求-------------------");
         log.info(platformStopCharging.toString());
         //推送监管平台订单状态和订单详情
         ChargingOrderVo chargingOrderVo = new ChargingOrderVo();
         BeanUtils.copyProperties(chargingOrder, chargingOrderVo);
         chargingMessageClient.pushOrderInfo(chargingOrderVo);
         chargingMessageClient.pushOrderStatus(chargingOrderVo);
      });
      return R.ok();
   }
@@ -4224,9 +4188,9 @@
   @Override
   public R pushOrderInfo(String code) {
      TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
      tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
            chargingOrder.getOperatorId());
//      tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
//      tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
//            chargingOrder.getOperatorId());
      tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      return R.ok();
   }
@@ -4330,9 +4294,10 @@
   }
   
   @Override
   public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) {
      return this.baseMapper.getSumDegreeBySiteIds(siteIds);
   public Double getSumDegreeBySiteIds(List<Integer> siteIds) {
      Double sumDegreeBySiteIds = this.baseMapper.getSumDegreeBySiteIds(siteIds);
      return sumDegreeBySiteIds;
      
   }
   
@@ -4368,4 +4333,13 @@
   public List<TChargingOrder> findChargingOrder() {
      return this.baseMapper.findChargingOrder();
   }
   /**
    * 获取已结束的数据
    * @return
    */
   @Override
   public List<TChargingOrder> findEndChargingOrder() {
      return this.baseMapper.findEndChargingOrder();
   }
}