xuhy
2024-11-01 3d24cd1458df38d6556c33f9b513b8f4df976626
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -256,11 +256,13 @@
      myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
      String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
      myChargingOrderInfo.setName(name);
      if(null != chargingOrder.getAppUserCarId()){
         TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData().get(0);
         myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
      }else{
         myChargingOrderInfo.setLicensePlate("无");
      if(Objects.nonNull(chargingOrder.getAppUserCarId())){
         TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData();
         if(null != tAppUserCar){
            myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
         }else{
            myChargingOrderInfo.setLicensePlate("无");
         }
      }
      myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
      myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
@@ -1101,7 +1103,7 @@
            String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
            appUserIntegralChange.setCode(code);
            appUserIntegralChange.setAppUserId(appUser1.getId());
            appUserIntegralChange.setChangeType(5);
            appUserIntegralChange.setChangeType(4);
            appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
            appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
            appUserIntegralChange.setCreateTime(LocalDateTime.now());
@@ -1204,8 +1206,8 @@
       BigDecimal electronicMoney = new BigDecimal("0");
       BigDecimal serviceMoney = new BigDecimal("0");
      for (ChargingOrderVO chargingOrderVO : list) {
         chargingOrderVO.setCommissionAmount(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
         chargingOrderVO.setPlatFormMoney(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
         chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
         chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
         chargingOrderVO.setUid(chargingOrderVO.getId()+"");
         TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
         TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
@@ -1397,12 +1399,11 @@
      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
      for (ChargingOrderListVO chargingOrderListVO : list) {
         chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
         chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
         BigDecimal bigDecimal = new BigDecimal("0.006");
         if (chargingOrderListVO.getOrderAmount()!=null){
            chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getOrderAmount().multiply(bigDecimal));
         }
         chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount());
         chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
         chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
         List<Integer> integers = new ArrayList<>();
         integers.add(chargingOrderListVO.getSiteId());
@@ -1421,7 +1422,7 @@
         UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderListVO.getCode()).getData();
         if (data5!=null){
            if (data5.getTime_remaining()!=null){
               chargingOrderListVO.setChargingSecond(data5.getTime_remaining()*60L);
               chargingOrderListVO.setChargingSecond(data5.getCumulative_charging_time()*60L);
            }
         }
@@ -1430,8 +1431,8 @@
            List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
         if (data6!=null && !data6.isEmpty()){
               // 第一条数据soc为开始 最后一条数据soc为结束soc
               chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString());
               chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
               chargingOrderListVO.setEndSoc(data6.get(0).getSoc().toString());
               chargingOrderListVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
            }
         }
@@ -1611,9 +1612,7 @@
   @Override
   public ChargingOrderListInfoVO chargingInfo(String uid) {
      TChargingOrder chargingOrder= this.getById(uid);
      ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
      chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
      BigDecimal bigDecimal = new BigDecimal("0.006");
      if (chargingOrder.getOrderAmount()!=null){
@@ -1662,24 +1661,32 @@
               if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
                     uploadRealTimeMonitoringData.getOutput_voltage()!=null){
                  uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
                        .multiply(uploadRealTimeMonitoringData.getOutput_current()));
                        .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_UP));
               }
            }
            if (!data6.isEmpty()){
               // 第一条数据soc为开始 最后一条数据soc为结束soc
               chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
               chargingOrderListInfoVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
               chargingOrderListInfoVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
               chargingOrderListInfoVO.setEndSoc(data6.get(0).getSoc().toString());
               chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
               chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+"");
               SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
                  uploadRealTimeMonitoringData.setCreateTime(simpleDateFormat.format(uploadRealTimeMonitoringData.getCreate_time()));
               }
            }
         }
         chargingOrderListInfoVO.setList(data6);
      }
      // 获取充电时间
      UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
      if (data5!=null){
         if (data5.getTime_remaining()!=null){
            chargingOrderListInfoVO.setChargingSecond(data5.getCumulative_charging_time()*60L+"");
         }
      }
      if (chargingOrder.getAppUserCarId()!=null){
         List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData();
@@ -2027,7 +2034,7 @@
         }
      }
      
      order.setServiceCharge(periodServicePrice_total);
      order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
      order.setPaymentAmount(payAmount);
      order.setRefundAmount(refundAmount);
      order.setRefundStatus(1);
@@ -2240,6 +2247,9 @@
            if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
               return R.fail("退款金额需小于支付金额");
            }
            if ((tChargingOrder.getRechargeAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
               tChargingOrder.setStatus(5);
            }
            TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
@@ -2306,6 +2316,10 @@
            if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
               return R.fail("退款金额需小于支付金额");
            }
            if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
               tChargingOrder.setStatus(5);
            }
            TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
            chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
            chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2356,9 +2370,7 @@
                  tChargingOrder.setRefundStatus(2);
                  tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
                  if (payOrderQueryDto.getRefundAmount().compareTo(tChargingOrder.getPaymentAmount())==0){
                     tChargingOrder.setStatus(5);
                  }
                  shoppingOrderService.updateById(tChargingOrder);
                  shoppingOrderRefundService.save(chargingOrderRefund);
@@ -2373,6 +2385,8 @@
         if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
            return R.fail("退款金额需小于支付金额");
         }
         TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
         chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
         chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2585,7 +2599,7 @@
         tSettlementConfirm.setRemark(dto.getRemark());
         tSettlementConfirm.setServicePartner(dto.getServicePartner());
         tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
         BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner());
         BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner().multiply(new BigDecimal("0.01")));
         // 总电损费用
         BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN);
         // 平台承担电损
@@ -2747,10 +2761,17 @@
         }
         // 充电总时长
         Long temp = 0L;
         Long temp = 1L;
         if (StringUtils.hasLength(stringBuilder.toString())){
            List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(stringBuilder.substring(0,stringBuilder.length()-1)).getData();
            temp+=(data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum()*60);
            String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
            for (String s : substring.split(",")) {
               UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
               if (data6!=null){
                  temp+=(data6.getCumulative_charging_time()*60);
               }
            }
         }
         List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
         // 计算充电桩的功率平均值
@@ -2790,7 +2811,7 @@
            if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
               // 电站相同比较收入涨幅跌幅
               if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
                  BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
                  BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
                  tSettlementConfirm.setIncomePercentage(subtract+"%");
               }else {
                  tSettlementConfirm.setIncomePercentage("100"+"%");
@@ -2865,8 +2886,8 @@
   }
   @Override
   public List<Map<String, Object>> countBySource(List<Integer> siteIds) {
      return this.baseMapper.countBySource(siteIds);
   public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
      return this.baseMapper.countBySource(siteIds,statisticsQueryDto);
   }
   @Override
@@ -2996,4 +3017,9 @@
      }
      return this.list(queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
   }
   @Override
   public Long countCar(List<String> brands) {
      return this.baseMapper.countCar(brands);
   }
}