Pu Zhibing
7 天以前 7a4f9541331bef779a506b38a27ed5c3373c0bec
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -210,6 +210,9 @@
   
   @Resource
   private TransactionRecordClient transactionRecordClient;
   @Resource
   private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
@@ -1476,42 +1479,50 @@
//            .eq(TChargingOrderRefund::getRefundStatus,2).list();
   
   
       List<ChargingOrderVO> list1 = 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());
       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"));
         tCharingOrderVO.setIncome((map.get("paymentMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
         tCharingOrderVO.setElectronicMoney((map.get("electronicMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
         tCharingOrderVO.setServiceMoney((map.get("serviceMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
      }else{
         tCharingOrderVO.setTotal(BigDecimal.ZERO);
         tCharingOrderVO.setTime(0L);
         tCharingOrderVO.setIncome(BigDecimal.ZERO);
         tCharingOrderVO.setElectronicMoney(BigDecimal.ZERO);
         tCharingOrderVO.setServiceMoney(BigDecimal.ZERO);
      }
      tCharingOrderVO.setTotal(total);
      tCharingOrderVO.setTime(time);
      tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      pageInfo.setRecords(list);
      tCharingOrderVO.setList(pageInfo);
        return tCharingOrderVO;
@@ -2614,6 +2625,36 @@
            
         }
      }
      //添加汇总统计数据
      List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", chargingOrder.getId()));
      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);
      BigDecimal serviceMoney = BigDecimal.ZERO;
      BigDecimal paymentMoney = BigDecimal.ZERO;
      long time = 0;
      if (!chargingOrder.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 (chargingOrder.getStartTime()!=null && chargingOrder.getEndTime()!=null){
         LocalDateTime startTime = chargingOrder.getStartTime();
         LocalDateTime endTime = chargingOrder.getEndTime();
         // 计算时间差 单位秒
         time = ChronoUnit.SECONDS.between(startTime, endTime);
      }
      TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
      summaryData.setChargingOrderId(chargingOrder.getId());
      summaryData.setChargingCapacity(chargingCapacity);
      summaryData.setChargingDuration(time);
      summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
      chargingOrderSummaryDataService.save(summaryData);
      return R.ok();
   }
   
@@ -3979,4 +4020,48 @@
      tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      return R.ok();
   }
   public R addChargingOrderSummaryData(){
      List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
      List<TChargingOrder> list1 = this.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0));
      for (TChargingOrder 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);
         BigDecimal serviceMoney = new BigDecimal("0");
         BigDecimal paymentMoney = new BigDecimal("0");
         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")));
         }
         Long time = 0L;
         if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
            LocalDateTime startTime = chargingOrderVO.getStartTime();
            LocalDateTime endTime = chargingOrderVO.getEndTime();
            // 计算时间差 单位秒
            long between = ChronoUnit.SECONDS.between(startTime, endTime);
            time+=between;
         }
         TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
         summaryData.setChargingOrderId(chargingOrderVO.getId());
         summaryData.setChargingCapacity(chargingCapacity);
         summaryData.setChargingDuration(time);
         summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
         summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
         summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
         chargingOrderSummaryDataService.save(summaryData);
      }
      return R.ok();
   }
}