xuhy
2024-11-01 17d24b4fe9ab65c057408e2fac6f9d9c4c30402e
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -284,9 +284,17 @@
      if(null != dataList){
         //在MongoDB中获取数据
         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
         List<String> time = dataList.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
         List<BigDecimal> outputVoltage = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
         List<BigDecimal> outputCurrent = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
         List<UploadRealTimeMonitoringData> dataLists = new ArrayList<>();
         String t = "";
         for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : dataList) {
            if(!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)){
               dataLists.add(uploadRealTimeMonitoringData);
            }
         }
         List<String> time = dataLists.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
         List<BigDecimal> outputVoltage = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
         List<BigDecimal> outputCurrent = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
         List<Map<String, Object>> currentAndVoltage = new ArrayList<>();
         for (int i = 0; i < time.size(); i++) {
            Map<String, Object> map = new HashMap<>();
@@ -299,8 +307,8 @@
         }
         myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
         //在MongoDB中获取数据
         List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
         List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
         List<Integer> soc = dataLists.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
         List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
         List<Map<String, Object>> power = new ArrayList<>();
         for (int i = 0; i < time.size(); i++) {
            Map<String, Object> map = new HashMap<>();
@@ -1209,8 +1217,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();
@@ -1402,12 +1410,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());
@@ -1426,7 +1433,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);
            }
         }
@@ -1435,8 +1442,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());
            }
         }
@@ -1616,9 +1623,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){
@@ -1667,24 +1672,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();
@@ -2249,7 +2262,7 @@
            if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
               return R.fail("退款金额需小于支付金额");
            }
            if ((tChargingOrder.getRechargeAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
            if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
               tChargingOrder.setStatus(5);
            }
@@ -2318,7 +2331,7 @@
            if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
               return R.fail("退款金额需小于支付金额");
            }
            if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
            if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
               tChargingOrder.setStatus(5);
            }
@@ -2558,14 +2571,10 @@
         if (tChargingOrder.getCouponDiscountAmount()!=null){
            couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
         }
         if (tChargingOrder.getRefundStatus()!=null &&tChargingOrder.getRefundStatus() == 2){
            // 如果成功退款 那么减去退款金额
         if (tChargingOrder.getPaymentAmount()!=null){
            paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
         }else{
            if (tChargingOrder.getPaymentAmount()!=null){
               paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
            }
         }
      }
      // 三方交易手续费 三方收费*0.6%
      commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
@@ -2574,7 +2583,7 @@
      tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).setScale(2, RoundingMode.HALF_DOWN));
      tSettlementConfirm.setOrderCommission(orderCommission);
      tSettlementConfirm.setVipDiscount(vipDiscount);
      tSettlementConfirm.setCouponDiscount(couponDiscount);
@@ -2614,7 +2623,7 @@
         tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
         tSettlementConfirm.setDistribution(dto.getDistribution());
         tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
         tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getMetering()));
         tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getSupplyElectronic()));
         tSettlementConfirm.setProfitMoney(chargingElectronic.add(serviceCharge).subtract(tSettlementConfirm.getCost()));
         tSettlementConfirm.setNewSettlement(subtract2.subtract(tSettlementConfirm.getCost()));
@@ -2625,18 +2634,22 @@
   @Override
   public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
      String startTime = null;
      String endTime = null;
      if (StringUtils.hasLength(dto.getStartTime())){
         dto.setType(1);
         String[] split = dto.getStartTime().split(" - ");
         dto.setStartTime(split[0]);
         dto.setEndTime(split[1]);
         startTime = split[0];
         endTime = split[1];
      }
      if (StringUtils.hasLength(dto.getEndTime())){
         dto.setType(2);
         String[] split = dto.getStartTime().split(" - ");
         dto.setStartTime(split[0]);
         dto.setEndTime(split[1]);
         String[] split = dto.getEndTime().split(" - ");
         startTime = split[0];
         endTime = split[1];
      }
      dto.setStartTime(startTime);
      dto.setEndTime(endTime);
      PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
      List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
      for (TSettlementConfirm tSettlementConfirm : list) {
@@ -2888,8 +2901,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
@@ -3008,11 +3021,8 @@
      if(null != order.getAppUserId()){
         queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
      }
      if(null != order.getAppUserId()){
         queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
      }
      if(null != order.getStatusList()){
         queryWrapper.in(TChargingOrder::getAppUserId, order.getStatusList());
         queryWrapper.in(TChargingOrder::getStatus, order.getStatusList());
      }
      if(null != order.getEndMode()){
         queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode());