Pu Zhibing
2025-12-11 3e1da3471f84635cea96b1785c92e248482a5b81
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1845,103 +1845,200 @@
      }
      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<Site> sites = siteClient.getSiteAll().getData();
      List<Long> collect1 = list.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
      if(collect1.isEmpty()){
         collect1.add(-1L);
      }
      List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
      for (ChargingOrderListVO chargingOrderListVO : list) {
//      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
//      List<Site> sites = siteClient.getSiteAll().getData();
//      List<Long> collect1 = list.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
//      if(collect1.isEmpty()){
//         collect1.add(-1L);
//      }
//      List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
//      for (ChargingOrderListVO chargingOrderListVO : list) {
//         if (roleType == 2) {
//            List<Boolean> data = partnerClient.getChargingListMenu(sysUser.getObjectId(), chargingOrderListVO.getSiteId()).getData();
//            chargingOrderListVO.setAuthInfo(data.get(0));
//            chargingOrderListVO.setAuthCurve(data.get(1));
//         }
//         chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
//         BigDecimal bigDecimal = new BigDecimal("0.006");
//         if (chargingOrderListVO.getOrderAmount() != null) {
//            chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getRechargeAmount().multiply(bigDecimal));
//         }
//         chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
//         chargingOrderListVO.setUid(chargingOrderListVO.getId() + "");
//         List<Integer> integers = new ArrayList<>();
//         integers.add(chargingOrderListVO.getSiteId());
//         Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
//         if (site != null) {
//            chargingOrderListVO.setSiteName(site.getName());
//         }
//         if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
//            TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
//            TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
//            if (data2 != null && data1 != null) {
//               chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
//            }
//         }
//         if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
//            LocalDateTime startTime = chargingOrderListVO.getStartTime();
//            LocalDateTime endTime = chargingOrderListVO.getEndTime();
//            // 计算时间差 单位秒
//            long between = ChronoUnit.SECONDS.between(startTime, endTime);
//            chargingOrderListVO.setChargingSecond(between);
//         }
//         // 获取开始SOC 结束soc
//         if (chargingOrderListVO.getCode() != null) {
//            UploadRealTimeMonitoringData asc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "asc");
//            UploadRealTimeMonitoringData desc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "desc");
//            if(null != asc){
//               chargingOrderListVO.setStartSoc(asc.getSoc().toString());
//            }
//            if(null != desc){
//               chargingOrderListVO.setEndSoc(desc.getSoc().toString());
//            }
//         }
//
//         if (chargingOrderListVO.getAppUserId() != null) {
//            TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
//            List<Long> carId = new ArrayList<>();
//            if (data3 != null) {
//               if (chargingOrderListVO.getAppUserCarId() != null) {
//                  carId.add(chargingOrderListVO.getAppUserCarId());
//                  if (!carId.isEmpty()) {
//                     List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
//                     if (data4 != null && !data4.isEmpty()) {
//                        chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
//                     }
//                  }
//               } else {
//                  chargingOrderListVO.setLicensePlate(chargingOrderListVO.getPlateNum());
//               }
//               chargingOrderListVO.setPhone(data3.getPhone());
//            }
//         }
//         List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(s->s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
//         // 尖峰平谷充电量 度数
//         BigDecimal jian = new BigDecimal("0");
//         BigDecimal feng = new BigDecimal("0");
//         BigDecimal ping = new BigDecimal("0");
//         BigDecimal gu = new BigDecimal("0");
//         BigDecimal total = new BigDecimal("0");
//         for (TChargingOrderAccountingStrategy temp : list2) {
//            if (temp.getChargingCapacity() == null) {
//               temp.setChargingCapacity(BigDecimal.ZERO);
//            }
//            switch (temp.getType()) {
//               case 1:
//                  jian = jian.add(temp.getChargingCapacity());
//                  break;
//               case 2:
//                  feng = feng.add(temp.getChargingCapacity());
//                  break;
//               case 3:
//                  ping = ping.add(temp.getChargingCapacity());
//                  break;
//               case 4:
//                  gu = gu.add(temp.getChargingCapacity());
//                  break;
//            }
//         }
//         total = total.add(jian).add(feng).add(ping).add(gu);
//         if (total.compareTo(new BigDecimal("0")) != 0) {
//            chargingOrderListVO.setElectronicProportion(
//                  jian.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(尖)/"
//                        + feng.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(峰)/"
//                        + ping.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(平)/"
//                        + gu.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(谷)");
//         } else {
//            chargingOrderListVO.setElectronicProportion(
//                  "0" + "%(尖)/" +
//                        "0" + "%(峰)/" +
//                        "0" + "%(平)/" +
//                        "0" + "%(谷)");
//         }
//         if (chargingOrderListVO.getOrderSource().equals(2)) {
//            chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge() != null ?
//                  chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP)
//                  : new BigDecimal("0"));
//         } else {
//            chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
//         }
//      }
      List<ChargingOrderListVO> list = new ArrayList<>();
      List<Map<String, Object>> maps = this.baseMapper.chargingList1(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
      for (Map<String, Object> map : maps) {
         ChargingOrderListVO chargingOrderListVO = new ChargingOrderListVO();
         if (roleType == 2) {
            List<Boolean> data = partnerClient.getChargingListMenu(sysUser.getObjectId(), chargingOrderListVO.getSiteId()).getData();
            chargingOrderListVO.setAuthInfo(data.get(0));
            chargingOrderListVO.setAuthCurve(data.get(1));
         }
         chargingOrderListVO.setCode(map.get("code").toString());
         chargingOrderListVO.setSiteName(map.get("siteName").toString());
         chargingOrderListVO.setOrderType(map.get("orderType").toString());
         chargingOrderListVO.setTerminalName(map.get("terminalName").toString());
         chargingOrderListVO.setElectricity(null == map.get("electricity") ? BigDecimal.ZERO : new BigDecimal(map.get("electricity").toString()));
         chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
         Object periodElectricPrice = map.get("periodElectricPrice");
         Object periodServicePrice = map.get("periodServicePrice");
         if(null != periodServicePrice){
            Integer orderSource = Integer.valueOf(map.get("orderSource").toString());
            if(2 == orderSource){
               BigDecimal bigDecimal = new BigDecimal(periodServicePrice.toString()).multiply(new BigDecimal(0.8)).setScale(2, RoundingMode.HALF_EVEN);
               chargingOrderListVO.setPaymentAmount(new BigDecimal(periodElectricPrice.toString()).add(bigDecimal));
               BigDecimal sharingAmount = new BigDecimal(periodServicePrice.toString()).multiply(new BigDecimal(0.2)).setScale(2, RoundingMode.HALF_EVEN);
               chargingOrderListVO.setSharingAmount(sharingAmount);
            }else{
               chargingOrderListVO.setPaymentAmount(new BigDecimal(periodElectricPrice.toString()).add(new BigDecimal(periodServicePrice.toString())).setScale(2, RoundingMode.HALF_EVEN));
               chargingOrderListVO.setSharingAmount(BigDecimal.ZERO);
            }
         }else{
            chargingOrderListVO.setPaymentAmount(BigDecimal.ZERO);
            chargingOrderListVO.setSharingAmount(BigDecimal.ZERO);
         }
         chargingOrderListVO.setElectrovalence(null == map.get("electrovalence") ? BigDecimal.ZERO : new BigDecimal(map.get("electrovalence").toString()));
         chargingOrderListVO.setServiceCharge(null == map.get("serviceCharge") ? BigDecimal.ZERO : new BigDecimal(map.get("serviceCharge").toString()));
         BigDecimal bigDecimal = new BigDecimal("0.006");
         if (chargingOrderListVO.getOrderAmount() != null) {
            chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getRechargeAmount().multiply(bigDecimal));
         if (!"0".equals(map.get("rechargePaymentType").toString())) {
            chargingOrderListVO.setCommissionAmount(new BigDecimal(map.get("rechargeAmount").toString()).multiply(bigDecimal));
         }
         chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
         chargingOrderListVO.setUid(chargingOrderListVO.getId() + "");
         List<Integer> integers = new ArrayList<>();
         integers.add(chargingOrderListVO.getSiteId());
         Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
         if (site != null) {
            chargingOrderListVO.setSiteName(site.getName());
         if(null != map.get("tripartitePlatformName")){
            chargingOrderListVO.setTripartitePlatformName(map.get("tripartitePlatformName").toString());
         }
         if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
            TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
            TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
            if (data2 != null && data1 != null) {
               chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
            }
         if(null != map.get("startTime")){
            chargingOrderListVO.setStartTime(LocalDateTime.parse(map.get("startTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
         if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
            LocalDateTime startTime = chargingOrderListVO.getStartTime();
            LocalDateTime endTime = chargingOrderListVO.getEndTime();
            // 计算时间差 单位秒
            long between = ChronoUnit.SECONDS.between(startTime, endTime);
            chargingOrderListVO.setChargingSecond(between);
         if(null != map.get("endTime")){
            chargingOrderListVO.setEndTime(LocalDateTime.parse(map.get("endTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         }
         // 获取开始SOC 结束soc
         if (chargingOrderListVO.getCode() != null) {
            UploadRealTimeMonitoringData asc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "asc");
            UploadRealTimeMonitoringData desc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode(), "desc");
            if(null != asc){
               chargingOrderListVO.setStartSoc(asc.getSoc().toString());
            }
            if(null != desc){
               chargingOrderListVO.setEndSoc(desc.getSoc().toString());
            }
         if(null != map.get("chargingSecond")){
            chargingOrderListVO.setChargingSecond(Long.valueOf(map.get("chargingSecond").toString()));
         }else{
            chargingOrderListVO.setChargingSecond(0L);
         }
         if (chargingOrderListVO.getAppUserId() != null) {
            TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
            List<Long> carId = new ArrayList<>();
            if (data3 != null) {
               if (chargingOrderListVO.getAppUserCarId() != null) {
                  carId.add(chargingOrderListVO.getAppUserCarId());
                  if (!carId.isEmpty()) {
                     List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
                     if (data4 != null && !data4.isEmpty()) {
                        chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
                     }
                  }
               } else {
                  chargingOrderListVO.setLicensePlate(chargingOrderListVO.getPlateNum());
               }
               chargingOrderListVO.setPhone(data3.getPhone());
            }
         if(null != map.get("startSoc")){
            chargingOrderListVO.setEndSoc(map.get("startSoc").toString());
         }
         List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(s->s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
         // 尖峰平谷充电量 度数
         BigDecimal jian = new BigDecimal("0");
         BigDecimal feng = new BigDecimal("0");
         BigDecimal ping = new BigDecimal("0");
         BigDecimal gu = new BigDecimal("0");
         BigDecimal total = new BigDecimal("0");
         for (TChargingOrderAccountingStrategy temp : list2) {
            if (temp.getChargingCapacity() == null) {
               temp.setChargingCapacity(BigDecimal.ZERO);
            }
            switch (temp.getType()) {
               case 1:
                  jian = jian.add(temp.getChargingCapacity());
                  break;
               case 2:
                  feng = feng.add(temp.getChargingCapacity());
                  break;
               case 3:
                  ping = ping.add(temp.getChargingCapacity());
                  break;
               case 4:
                  gu = gu.add(temp.getChargingCapacity());
                  break;
            }
         if(null != map.get("endSoc")){
            chargingOrderListVO.setEndSoc(map.get("endSoc").toString());
         }
         total = total.add(jian).add(feng).add(ping).add(gu);
         if(null != map.get("status")){
            chargingOrderListVO.setStatus(Integer.valueOf(map.get("status").toString()));
         }
         if(null != map.get("endMode")){
            chargingOrderListVO.setEndMode(Integer.valueOf(map.get("endMode").toString()));
         }
         if(null != map.get("phone")){
            chargingOrderListVO.setPhone(map.get("phone").toString());
         }
         if(null != map.get("licensePlate")){
            chargingOrderListVO.setLicensePlate(map.get("licensePlate").toString());
         }
         BigDecimal jian = null == map.get("jian") ? BigDecimal.ZERO : new BigDecimal(map.get("jian").toString());
         BigDecimal feng = null == map.get("feng") ? BigDecimal.ZERO : new BigDecimal(map.get("feng").toString());
         BigDecimal ping = null == map.get("ping") ? BigDecimal.ZERO : new BigDecimal(map.get("ping").toString());
         BigDecimal gu = null == map.get("gu") ? BigDecimal.ZERO : new BigDecimal(map.get("gu").toString());
         BigDecimal total = jian.add(feng).add(ping).add(gu);
         if (total.compareTo(new BigDecimal("0")) != 0) {
            chargingOrderListVO.setElectronicProportion(
                  jian.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(尖)/"
@@ -1955,44 +2052,10 @@
                        "0" + "%(平)/" +
                        "0" + "%(谷)");
         }
         if (chargingOrderListVO.getOrderSource().equals(2)) {
            chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge() != null ?
                  chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP)
                  : new BigDecimal("0"));
         } else {
            chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
         }
         list.add(chargingOrderListVO);
      }
      // 不分页
      PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999);
      List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2);
      for (ChargingOrderListVO chargingOrderListVO : list1) {
         List<Integer> integers = new ArrayList<>();
         integers.add(chargingOrderListVO.getSiteId());
         Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
         if (site != null) {
            chargingOrderListVO.setSiteName(site.getName());
         }
         if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
            LocalDateTime startTime = chargingOrderListVO.getStartTime();
            LocalDateTime endTime = chargingOrderListVO.getEndTime();
            // 计算时间差 单位秒
            long between = ChronoUnit.SECONDS.between(startTime, endTime);
            chargingOrderListVO.setChargingSecond(between);
         }
         if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
            TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
            TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
            if (data2 != null && data1 != null) {
               chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
            }
         }
      }
      chargingOrderTimeVO.setExportList(list1);
      chargingOrderTimeVO.setOrderCount(list1.size());
      // 计算充电总度数
      BigDecimal electronic = new BigDecimal("0");
      // 支付金额
@@ -2016,72 +2079,25 @@
      BigDecimal feng = new BigDecimal("0");
      BigDecimal ping = new BigDecimal("0");
      BigDecimal gu = new BigDecimal("0");
      for (ChargingOrderListVO chargingOrderListVO : list1) {
         List<TChargingOrderAccountingStrategy> collect = chargingOrderAccountingStrategies.stream().filter(s -> s.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList());
         BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
         BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
         electronic = electronic.add(chargingCapacity);
         electrovalence = electrovalence.add(periodElectricPrice);
         if (chargingOrderListVO.getOrderSource().equals(2)) {
            serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
            paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8")));
         } else {
            serviceCharge = serviceCharge.add(periodServicePrice);
            paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice);
         }
         if (!chargingOrderListVO.getOrderSource().equals(2)) {
            for (TChargingOrderAccountingStrategy temp : collect) {
               switch (temp.getType()) {
                  case 1:
                     jian = jian.add(temp.getChargingCapacity());
                     jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     jianService = jianService.add(temp.getPeriodServicePrice());
                     break;
                  case 2:
                     feng = feng.add(temp.getChargingCapacity());
                     fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     fengService = fengService.add(temp.getPeriodServicePrice());
                     break;
                  case 3:
                     ping = ping.add(temp.getChargingCapacity());
                     pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     pingService = pingService.add(temp.getPeriodServicePrice());
                     break;
                  case 4:
                     gu = gu.add(temp.getChargingCapacity());
                     guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice());
                     guService = guService.add(temp.getPeriodServicePrice());
                     break;
               }
            }
         } else {
            for (TChargingOrderAccountingStrategy temp : collect) {
               BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8"));
               switch (temp.getType()) {
                  case 1:
                     jian = jian.add(temp.getChargingCapacity());
                     jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     jianService = jianService.add(multiply);
                     break;
                  case 2:
                     feng = feng.add(temp.getChargingCapacity());
                     fengElectronic = fengElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     fengService = fengService.add(multiply);
                     break;
                  case 3:
                     ping = ping.add(temp.getChargingCapacity());
                     pingElectronic = pingElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     pingService = pingService.add(multiply);
                     break;
                  case 4:
                     gu = gu.add(temp.getChargingCapacity());
                     guElectronic = guElectronic.add(temp.getPeriodElectricPrice()).add(multiply);
                     guService = guService.add(multiply);
                     break;
               }
            }
         }
      List<Map<String, Object>> list1 = this.baseMapper.chargingListSum(dto, startTime1, startTime2, endTime1, endTime2);
      chargingOrderTimeVO.setOrderCount(list1.size());
      for (Map<String, Object> map : list1) {
         electronic = electronic.add(new BigDecimal(null == map.get("electronic") ? "0" : map.get("electronic").toString()));
         paymentAmount = paymentAmount.add(new BigDecimal(null == map.get("paymentAmount") ? "0" : map.get("paymentAmount").toString()));
         electrovalence = electrovalence.add(new BigDecimal(null == map.get("electrovalence") ? "0" : map.get("electrovalence").toString()));
         serviceCharge = serviceCharge.add(new BigDecimal(null == map.get("serviceCharge") ? "0" : map.get("serviceCharge").toString()));
         jianElectronic = jianElectronic.add(new BigDecimal(null == map.get("jianElectronic") ? "0" : map.get("jianElectronic").toString()));
         fengElectronic = fengElectronic.add(new BigDecimal(null == map.get("fengElectronic") ? "0" : map.get("fengElectronic").toString()));
         pingElectronic = pingElectronic.add(new BigDecimal(null == map.get("pingElectronic") ? "0" : map.get("pingElectronic").toString()));
         guElectronic = guElectronic.add(new BigDecimal(null == map.get("guElectronic") ? "0" : map.get("guElectronic").toString()));
         jianService = jianService.add(new BigDecimal(null == map.get("jianService") ? "0" : map.get("jianService").toString()));
         fengService = fengService.add(new BigDecimal(null == map.get("fengService") ? "0" : map.get("fengService").toString()));
         pingService = pingService.add(new BigDecimal(null == map.get("pingService") ? "0" : map.get("pingService").toString()));
         guService = guService.add(new BigDecimal(null == map.get("guService") ? "0" : map.get("guService").toString()));
         jian = jian.add(new BigDecimal(null == map.get("jian") ? "0" : map.get("jian").toString()));
         feng = feng.add(new BigDecimal(null == map.get("feng") ? "0" : map.get("feng").toString()));
         ping = ping.add(new BigDecimal(null == map.get("ping") ? "0" : map.get("ping").toString()));
         gu = gu.add(new BigDecimal(null == map.get("gu") ? "0" : map.get("gu").toString()));
      }
      
      chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN));
@@ -2130,6 +2146,115 @@
      pageInfo.setRecords(list);
      chargingOrderTimeVO.setList(pageInfo);
      return chargingOrderTimeVO;
   }
   @Override
   public List<ChargingOrderListVO> export(ChargingListQuery dto) {
      String startTime1 = null;
      String startTime2 = null;
      String endTime1 = null;
      String endTime2 = null;
      List<TChargingGun> allGun = chargingGunClient.getAllGun().getData();
      List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
      if (StringUtils.hasLength(dto.getStartTime())) {
         String[] split = dto.getStartTime().split(" - ");
         startTime1 = split[0];
         startTime2 = split[1];
      }
      if (StringUtils.hasLength(dto.getPhone())) {
         List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
         if (data != null) {
            if (!data.isEmpty()) {
               dto.setUserIds(data);
            }
         } else {
            dto.setUserIds(new ArrayList<Long>());
         }
         if (dto.getUserIds().isEmpty()) {
            List<Long> carIds = dto.getUserIds();
            carIds.add(-1L);
            dto.setUserIds(carIds);
         }
      }
      if (StringUtils.hasLength(dto.getLicensePlate())) {
         List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData();
         if (data != null) {
            if (!data.isEmpty()) {
               dto.setCarIds(data);
            }
         } else {
            dto.setCarIds(new ArrayList<Long>());
         }
         if (dto.getCarIds().isEmpty()) {
            List<Long> carIds = dto.getCarIds();
            carIds.add(-1L);
            dto.setCarIds(carIds);
         }
      }
      Long userId = tokenService.getLoginUser().getUserid();
      // 查询当前登陆人按钮权限
      SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
      Integer roleType = sysUser.getRoleType();
      //如果没传siteId,获取当前登陆人所有的siteIds
      List<Integer> siteIds = new ArrayList<>();
      if (dto.getSiteId() == null) {
         if (userId != null) {
            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
            for (GetSiteListDTO datum : data) {
               siteIds.add(datum.getId());
            }
         }
      } else {
         siteIds.add(dto.getSiteId());
      }
      if (siteIds.isEmpty()) {
         siteIds.add(-1);
      } else {
         if (roleType == 2) {
            List<Integer> integers = new ArrayList<>();
            for (Integer siteId : siteIds) {
               // 校验有没有这个站点的权限
               List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
               Boolean b = t1.get(1);
               if (b) {
                  integers.add(siteId);
               }
            }
            siteIds = integers;
         }
      }
      dto.setSiteIds(siteIds);
      List<Site> sites = siteClient.getSiteAll().getData();
      // 不分页
      PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999);
      List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2);
      for (ChargingOrderListVO chargingOrderListVO : list1) {
         List<Integer> integers = new ArrayList<>();
         integers.add(chargingOrderListVO.getSiteId());
         Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null);
         if (site != null) {
            chargingOrderListVO.setSiteName(site.getName());
         }
         if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) {
            LocalDateTime startTime = chargingOrderListVO.getStartTime();
            LocalDateTime endTime = chargingOrderListVO.getEndTime();
            // 计算时间差 单位秒
            long between = ChronoUnit.SECONDS.between(startTime, endTime);
            chargingOrderListVO.setChargingSecond(between);
         }
         if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) {
            TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null);
            TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null);
            if (data2 != null && data1 != null) {
               chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
            }
         }
      }
      return list1;
   }
   
   
@@ -2563,7 +2688,11 @@
         List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         chargingOrder.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         if(dataList.isEmpty()){
            chargingOrder.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
         }else{
            chargingOrder.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm: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));
@@ -2639,6 +2768,14 @@
         chargingOrder.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
         chargingOrder.setRefundStatus(1);
         UploadRealTimeMonitoringData asc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode(), "asc");
         UploadRealTimeMonitoringData desc = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode(), "desc");
         if(null != asc){
            chargingOrder.setStartSoc(new BigDecimal(asc.getSoc()));
         }
         if(null != desc){
            chargingOrder.setEndSoc(new BigDecimal(desc.getSoc()));
         }
         this.updateById(chargingOrder);
         redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS);