From 3e1da3471f84635cea96b1785c92e248482a5b81 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 11 十二月 2025 11:59:04 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                |  507 ++++++++++++++++++++++++--------------
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECPushUtil.java                     |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java                   |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                         |    4 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java                             |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java                           |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java                                    |   20 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java              |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java                              |    9 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                 |  187 ++++++++++++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java      |    2 
 12 files changed, 550 insertions(+), 201 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 292c41d..ff674a6 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -241,6 +241,12 @@
     @ApiModelProperty(value = "实时需求电流")
     @TableField("need_elec")
     private BigDecimal needElec;
+    @ApiModelProperty(value = "开始SOC")
+    @TableField("start_soc")
+    private BigDecimal startSoc;
+    @ApiModelProperty(value = "结束SOC")
+    @TableField("end_soc")
+    private BigDecimal endSoc;
     @ApiModelProperty(value = "站点名称")
     @TableField(exist = false)
     private String siteName;
@@ -280,9 +286,6 @@
     @ApiModelProperty(value = "充电时长")
     @TableField(exist = false)
     private String chargingTime;
-    @ApiModelProperty(value = "充电后soc")
-    @TableField(exist = false)
-    private String endSoc;
     @ApiModelProperty(value = "客户昵称")
     @TableField(exist = false)
     private String userName;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java
index bcf7852..1f1954e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java
@@ -61,10 +61,6 @@
 
     @ApiModelProperty(value = "充电时长(分钟)")
     private String chargingSecond;
-    @ApiModelProperty(value = "充电前soc")
-    private String startSoc;
-    @ApiModelProperty(value = "充电后soc")
-    private String endSoc;
     @ApiModelProperty(value = "是否限制SOC")
     private String isSoc;
     @ApiModelProperty(value = "限制SOC方式")
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index 918eaeb..5120ee2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -581,8 +581,8 @@
                             min = uploadRealTimeMonitoringData.getSoc();
                         }
                     }
-                    settlementExportVO.setEndSoc(max+"");
-                    settlementExportVO.setStartSoc(min+"");
+                    settlementExportVO.setEndSoc(new BigDecimal(max));
+                    settlementExportVO.setStartSoc(new BigDecimal(min));
                 }
             }
             settlementExportVO.setIsSoc("否");
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
index 27425b7..7789280 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java
@@ -2055,7 +2055,7 @@
 				break;
 		}
 		supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent());
-		supEquipChargeStatus.setSOC(new BigDecimal(chargingOrder.getEndSoc()));
+		supEquipChargeStatus.setSOC(chargingOrder.getEndSoc());
 		supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
 		supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 		supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence());
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECPushUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECPushUtil.java
index 095b90d..677b3c6 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECPushUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECPushUtil.java
@@ -159,7 +159,7 @@
 		}
 		supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent());
 
-		supEquipChargeStatus.setSOC(StringUtils.hasLength(chargingOrder.getEndSoc())?new BigDecimal(chargingOrder.getEndSoc()):new BigDecimal("1"));
+		supEquipChargeStatus.setSOC(chargingOrder.getEndSoc());
 		supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
 		supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 		supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence());
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java
index ef03edc..846b86e 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java
@@ -2123,7 +2123,7 @@
 				break;
 		}
 		supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent());
-		supEquipChargeStatus.setSOC(new BigDecimal(chargingOrder.getEndSoc()));
+		supEquipChargeStatus.setSOC(chargingOrder.getEndSoc());
 		supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : "");
 		supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 		supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence());
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
index 1022a54..02a365e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -111,9 +111,8 @@
     @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"})
     @PutMapping("/export")
     public void export(@RequestBody ChargingListQuery dto) {
-        ChargingOrderTimeVO res = chargingOrderService.chargingList(dto);
         List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>();
-        List<ChargingOrderListVO> exportList = res.getExportList();
+        List<ChargingOrderListVO> exportList = chargingOrderService.export(dto);
         int i = 1;
         List<TChargingGun> data = chargingGunClient.getAllGun().getData();
         List<Site> data9 = siteClient.getSiteAll().getData();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index 6c456d8..2549d63 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -82,6 +82,13 @@
 	List<Map<String, Object>> getYearData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
 
 	List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
+
+	List<Map<String, Object>> chargingList1(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
+
+
+
+	List<Map<String, Object>> chargingListSum(@Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
+
 	List<ChargingOrderListVO> chargingListNoPage( @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
 
 	List<Map<String, Object>> getByDate(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 38dafd3..ce49663 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -168,6 +168,10 @@
 
     ChargingOrderTimeVO chargingList(ChargingListQuery dto);
 
+
+	List<ChargingOrderListVO> export(ChargingListQuery dto);
+
+
 	R payRefund(PayOrderRefundDto payOrderQueryDto);
 
 	ChargingOrderListInfoVO chargingInfo(String uid);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index a712368..dea831a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/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);
 			
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index e30e180..b8aa66e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -190,7 +190,11 @@
                     if(null == order.getStartTime()){
                         List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode());
                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                        order.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault())));
+                        if(dataList.isEmpty()){
+                            order.setStartTime(LocalDateTime.parse(one.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS").withZone(ZoneId.systemDefault())));
+                        }else{
+                            order.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault())));
+                        }
                     }
                     if(null == order.getEndTime()){
                         order.setEndTime(LocalDateTime.parse(one.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS").withZone(ZoneId.systemDefault())));
@@ -215,7 +219,11 @@
                     if(null == order.getStartTime()){
                         List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode());
                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                        order.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault())));
+                        if(dataList.isEmpty()){
+                            order.setStartTime(LocalDateTime.parse(one.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS").withZone(ZoneId.systemDefault())));
+                        }else{
+                            order.setStartTime(LocalDateTime.parse(sdf.format(dataList.get(dataList.size() - 1).getCreate_time()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault())));
+                        }
                     }
                     if(null == order.getEndTime()){
                         order.setEndTime(LocalDateTime.parse(one.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS").withZone(ZoneId.systemDefault())));
@@ -588,6 +596,14 @@
             order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
             order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
             order.setRefundStatus(1);
+            UploadRealTimeMonitoringData asc = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode(), "asc");
+            UploadRealTimeMonitoringData desc = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode(), "desc");
+            if(null != asc){
+                order.setStartSoc(new BigDecimal(asc.getSoc()));
+            }
+            if(null != desc){
+                order.setEndSoc(new BigDecimal(desc.getSoc()));
+            }
             chargingOrderService.updateById(order);
 
             order = chargingOrderService.getById(order.getId());
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index 0e8f16d..81c0d09 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -1033,6 +1033,193 @@
         and t1.start_time IS NOT NULL
         order by t1.create_time desc
     </select>
+
+
+    <select id="chargingList1" resultType="map">
+        select
+        aa.id,
+        aa.`code`,
+        aa.siteName,
+        aa.orderType,
+        aa.terminalName,
+        aa.electricity,
+        aa.rechargeAmount,
+        aa.rechargePaymentType,
+        aa.paymentAmount,
+        aa.electrovalence,
+        aa.serviceCharge,
+        aa.orderSource,
+        aa.tripartitePlatformName,
+        aa.startTime,
+        aa.endTime,
+        aa.chargingSecond,
+        aa.startSoc,
+        aa.endSoc,
+        aa.`status`,
+        aa.endMode,
+        aa.phone,
+        aa.licensePlate,
+        SUM(aa.period_electric_price) as periodElectricPrice,
+        SUM(aa.period_service_price) as periodServicePrice,
+        SUM(aa.jian) as jian,
+        SUM(aa.feng) as feng,
+        SUM(aa.ping) as ping,
+        SUM(aa.gu) as gu
+        from (
+            select
+            b.id,
+            b.`code`,
+            c.`name` as siteName,
+            b.order_type as orderType,
+            CONCAT(d.`name`, '-', e.`name`) as terminalName,
+            b.electricity,
+            b.recharge_amount as rechargeAmount,
+            b.recharge_payment_type as rechargePaymentType,
+            b.payment_amount as paymentAmount,
+            b.electrovalence,
+            b.service_charge as serviceCharge,
+            b.order_source as orderSource,
+            b.tripartite_platform_name as tripartitePlatformName,
+            DATE_FORMAT(b.start_time, '%Y-%m-%d %H:%i:%s') as startTime,
+            DATE_FORMAT(b.end_time, '%Y-%m-%d %H:%i:%s') as endTime,
+            (UNIX_TIMESTAMP(b.end_time) - UNIX_TIMESTAMP(b.start_time)) as chargingSecond,
+            b.start_soc as startSoc,
+            b.end_soc as endSoc,
+            b.`status`,
+            b.end_mode as endMode,
+            f.phone,
+            g.license_plate as licensePlate,
+            a.period_electric_price,
+            a.period_service_price,
+            CASE WHEN a.type = 1 THEN a.charging_capacity ELSE 0 END as jian,
+            CASE WHEN a.type = 2 THEN a.charging_capacity ELSE 0 END as feng,
+            CASE WHEN a.type = 3 THEN a.charging_capacity ELSE 0 END as ping,
+            CASE WHEN a.type = 4 THEN a.charging_capacity ELSE 0 END as gu
+            from `charging_pile_order`.t_charging_order_accounting_strategy a
+            left join `charging_pile_order`.t_charging_order b on (a.charging_order_id = b.id)
+            left join `charging_pile_service`.t_site c on (b.site_id = c.id)
+            left join `charging_pile_service`.t_charging_pile d on (b.charging_pile_id = d.id)
+            left join `charging_pile_service`.t_charging_gun e on (b.charging_gun_id = e.id)
+            left join `charging_pile_account`.t_app_user f on (b.app_user_id = f.id)
+            left join `charging_pile_account`.t_app_user_car g on (b.app_user_car_id = g.id)
+            where b.del_flag = 0 and b.recharge_payment_status = 2
+            <if test="null != req.code and req.code!=''">
+                and b.code LIKE CONCAT('%',#{req.code},'%')
+            </if>
+            <if test="null != req.carIds and req.carIds.size()>0">
+                and b.app_user_car_id in
+                <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="null != req.userIds and req.userIds.size()>0">
+                and b.app_user_id in
+                <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="null != req.siteIds and req.siteIds.size()>0">
+                and b.site_id in
+                <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="req.orderType != null ">
+                and b.order_type = #{req.orderType}
+            </if>
+            <if test="req.status != null ">
+                and b.status = #{req.status}
+            </if>
+            <if test="req.status != null ">
+                and b.status = #{req.status}
+            </if>
+            <if test="req.siteId != null ">
+                and b.site_id = #{req.siteId}
+            </if>
+            <if test="startTime1 != null and startTime1!=''">
+                and (b.create_time between #{startTime1} and #{startTime2})
+            </if>
+            <if test="endTime1 != null and endTime1!=''">
+                and (b.end_time between #{endTime1} and #{endTime2})
+            </if>
+            and b.start_time IS NOT NULL
+        ) as aa group by aa.id, aa.`code`, aa.siteName, aa.orderType, aa.terminalName, aa.electricity, aa.rechargeAmount, aa.paymentAmount, aa.electrovalence, aa.serviceCharge, aa.tripartitePlatformName,
+        aa.startTime, aa.endTime, aa.chargingSecond, aa.startSoc, aa.endSoc, aa.`status`, aa.endMode, aa.phone, aa.licensePlate, aa.orderSource, aa.rechargePaymentType order by aa.startTime desc
+    </select>
+
+
+
+
+    <select id="chargingListSum" resultType="map">
+        select
+        a.id,
+        sum(a.charging_capacity) as electronic,
+        sum(a.period_electric_price) as electrovalence,
+        sum(CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END) as serviceCharge,
+        sum(a.period_electric_price + (CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END)) as paymentAmount,
+        sum(CASE WHEN a.type = 1 THEN a.period_electric_price ELSE 0 END) as jianElectronic,
+        sum(CASE WHEN a.type = 2 THEN a.period_electric_price ELSE 0 END) as fengElectronic,
+        sum(CASE WHEN a.type = 3 THEN a.period_electric_price ELSE 0 END) as pingElectronic,
+        sum(CASE WHEN a.type = 4 THEN a.period_electric_price ELSE 0 END) as guElectronic,
+        sum(CASE WHEN a.order_source = 2 and a.type = 1 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 1 THEN a.period_service_price ELSE 0 END) as jianService,
+        sum(CASE WHEN a.order_source = 2 and a.type = 2 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 2 THEN a.period_service_price ELSE 0 END) as fengService,
+        sum(CASE WHEN a.order_source = 2 and a.type = 3 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 3 THEN a.period_service_price ELSE 0 END) as pingService,
+        sum(CASE WHEN a.order_source = 2 and a.type = 4 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 4 THEN a.period_service_price ELSE 0 END) as guService,
+        sum(CASE WHEN a.type = 1 THEN a.charging_capacity ELSE 0 END) as jian,
+        sum(CASE WHEN a.type = 2 THEN a.charging_capacity ELSE 0 END) as feng,
+        sum(CASE WHEN a.type = 3 THEN a.charging_capacity ELSE 0 END) as ping,
+        sum(CASE WHEN a.type = 4 THEN a.charging_capacity ELSE 0 END) as gu
+        from (
+            select co.id,coas.type, coas.charging_capacity, coas.period_electric_price, coas.period_service_price, co.order_source
+            from t_charging_order_accounting_strategy coas
+            left join t_charging_order co on (coas.charging_order_id = co.id)
+            where co.del_flag = 0 and co.recharge_payment_status = 2
+            <if test="null != req.code and req.code!=''">
+                and co.code LIKE CONCAT('%',#{req.code},'%')
+            </if>
+            <if test="null != req.carIds and req.carIds.size()>0">
+                and co.app_user_car_id in
+                <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="null != req.userIds and req.userIds.size()>0">
+                and co.app_user_id in
+                <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="null != req.siteIds and req.siteIds.size()>0">
+                and co.site_id in
+                <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="req.orderType != null ">
+                and co.order_type = #{req.orderType}
+            </if>
+            <if test="req.status != null ">
+                and co.status = #{req.status}
+            </if>
+            <if test="req.status != null ">
+                and co.status = #{req.status}
+            </if>
+            <if test="req.siteId != null ">
+                and co.site_id = #{req.siteId}
+            </if>
+            <if test="startTime1 != null and startTime1!=''">
+                and (co.create_time between #{startTime1} and #{startTime2})
+            </if>
+            <if test="endTime1 != null and endTime1!=''">
+                and (co.end_time between #{endTime1} and #{endTime2})
+            </if>
+            and co.start_time IS NOT NULL order by co.create_time desc
+        ) as a group by a.id
+    </select>
+
+
+
+
     <select id="chargingListNoPage" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
         select t1.* from t_charging_order t1
         where 1=1

--
Gitblit v1.7.1