From c05a14bba4b86d83918d7cdc01635785bf5694c2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 03 六月 2025 00:26:08 +0800
Subject: [PATCH] 拆分mongodb查询服务

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  215 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 144 insertions(+), 71 deletions(-)

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 07f670a..46af198 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
@@ -21,7 +21,6 @@
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
 import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient;
 import com.ruoyi.integration.api.feignClient.SendMessageClient;
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
@@ -50,6 +49,9 @@
 import com.ruoyi.order.service.TChargingOrderService;
 import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.order.service.*;
+import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService;
+import com.ruoyi.order.util.mongodb.service.TransactionRecordService;
+import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
 import com.ruoyi.order.vo.EndOfChargePageInfo;
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
@@ -140,7 +142,7 @@
 	private RedisService redisService;
 	
 	@Resource
-	private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
+	private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
 	
 	@Resource
 	private TCECClient tcecClient;
@@ -161,7 +163,7 @@
 	private AccountingStrategyClient accountingStrategyClient;
 
 	@Resource
-	private PlatformStartChargingReplyClient platformStartChargingReplyClient;
+	private PlatformStartChargingReplyService platformStartChargingReplyService;
 
 	@Resource
 	private TChargingOrderRefundService chargingOrderRefundService;
@@ -196,9 +198,6 @@
 	@Resource
 	private SecurityDetectionClient securityDetectionClient;
 	
-	@Resource
-	private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
-
 	//计数器
 	private Map<String, Integer> counter_map = new HashMap<>();
 	
@@ -209,7 +208,10 @@
 	private OperatorClient operatorClient;
 	
 	@Resource
-	private TransactionRecordClient transactionRecordClient;
+	private TransactionRecordService transactionRecordService;
+	
+	@Resource
+	private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
 
 
 
@@ -283,8 +285,12 @@
 		}else{
 			myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum());
 		}
-		myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
-		myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+		if(null != chargingOrder.getStartTime()){
+			myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+		}
+		if(null != chargingOrder.getEndTime()){
+			myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
+		}
 		myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount());
 		myChargingOrderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
 		myChargingOrderInfo.setRechargeAmount(chargingOrder.getRechargeAmount());
@@ -296,7 +302,7 @@
 						.orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
 		);
 		myChargingOrderInfo.setStageCost(stageCost);
-		List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
+		List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
 		if(null != dataList){
 			//在MongoDB中获取数据
 			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
@@ -382,7 +388,6 @@
 	 * @return
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) {
 		Long userId = tokenService.getLoginUserApplet().getUserId();
 		TAppUser appUser = appUserClient.getUserById(userId).getData();
@@ -569,7 +574,6 @@
 	 * @return
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no));
 		if(chargingOrder.getRechargePaymentStatus() == 2){
@@ -722,7 +726,7 @@
 		}
 		String code = chargingOrder.getCode();
 		String key = "AQJC_" + chargingOrder.getChargingGunId();
-		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
+		List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code);
 		log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
 		if(data.size() != 0){
 			PlatformStartChargingReply platformStartChargingReply = data.get(1);
@@ -1092,7 +1096,7 @@
 		chargingDetails.setCode(one.getCode());
 		chargingDetails.setStatus(one.getStatus());
 		chargingDetails.setChargingCost(one.getResidualAmount());
-		UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
+		UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode());
 		if(null != data){
 			chargingDetails.setChargeCurrent(data.getOutput_current());
 			chargingDetails.setChargeVoltage(data.getOutput_voltage());
@@ -1121,7 +1125,6 @@
 	 * @return
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public AjaxResult stopCharging(String id) {
 		TChargingOrder order = this.getById(id);
 		Integer status = order.getStatus();
@@ -1399,13 +1402,12 @@
 		if (siteIds.isEmpty())siteIds.add(-1);
 		dto.setSiteIds(siteIds);
 		List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
-		List<ChargingOrderVO> list1 = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
 		 BigDecimal total = new BigDecimal("0");
 		 long time = 0L;
 		 BigDecimal electronicMoney = new BigDecimal("0");
 		 BigDecimal serviceMoney = new BigDecimal("0");
 		 BigDecimal commissionMoney = new BigDecimal("0");
-		 BigDecimal refundMoney = new BigDecimal("0");
+//		 BigDecimal refundMoney = new BigDecimal("0");
 		 BigDecimal paymentMoney = new BigDecimal("0");
 		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
 
@@ -1473,50 +1475,54 @@
 			}
 		}
 
-		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
-				.eq(TChargingOrderRefund::getRefundStatus,2).list();
-
-//	    BigDecimal total = new BigDecimal("0");
-//	    long time = 0L;
-//	    BigDecimal electronicMoney = new BigDecimal("0");
-//	    BigDecimal serviceMoney = new BigDecimal("0");
-//	    BigDecimal refundMoney = new BigDecimal("0");
-//	    BigDecimal paymentMoney = new BigDecimal("0");
-		for (ChargingOrderVO chargingOrderVO : list1) {
-			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
-				continue;
-			}
-			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
-			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-			electronicMoney = electronicMoney.add(electronic_reduce);
-			total = total.add(chargingCapacity);
-			if (!chargingOrderVO.getOrderSource().equals(2)) {
-				serviceMoney = serviceMoney.add(service_reduce);
-				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
-			}else{
-				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
-				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
-			}
-			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
-				LocalDateTime startTime = chargingOrderVO.getStartTime();
-				LocalDateTime endTime = chargingOrderVO.getEndTime();
-				// 计算时间差 单位秒
-				long between = ChronoUnit.SECONDS.between(startTime, endTime);
-				time+=between;
-			}
-			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
-					.collect(Collectors.toList());
-			for (TChargingOrderRefund tChargingOrderRefund : list2) {
-				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
-			}
+//		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
+//				.eq(TChargingOrderRefund::getRefundStatus,2).list();
+	
+	
+	    Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2);
+//		for (ChargingOrderVO chargingOrderVO : list1) {
+//			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
+//				continue;
+//			}
+//			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
+//			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+//			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+//			BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+//			electronicMoney = electronicMoney.add(electronic_reduce);
+//			total = total.add(chargingCapacity);
+//			if (!chargingOrderVO.getOrderSource().equals(2)) {
+//				serviceMoney = serviceMoney.add(service_reduce);
+//				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+//			}else{
+//				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+//				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
+//			}
+//			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+//				LocalDateTime startTime = chargingOrderVO.getStartTime();
+//				LocalDateTime endTime = chargingOrderVO.getEndTime();
+//				// 计算时间差 单位秒
+//				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+//				time+=between;
+//			}
+////			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
+////					.collect(Collectors.toList());
+////			for (TChargingOrderRefund tChargingOrderRefund : list2) {
+////				refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
+////			}
+//		}
+		if(null != map){
+			tCharingOrderVO.setTotal(map.get("total")==null?BigDecimal.ZERO:(BigDecimal) map.get("total"));
+			tCharingOrderVO.setTime(map.get("time")==null?0L:(Long) map.get("time"));
+			tCharingOrderVO.setIncome((map.get("paymentMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			tCharingOrderVO.setElectronicMoney((map.get("electronicMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			tCharingOrderVO.setServiceMoney((map.get("serviceMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		}else{
+			tCharingOrderVO.setTotal(BigDecimal.ZERO);
+			tCharingOrderVO.setTime(0L);
+			tCharingOrderVO.setIncome(BigDecimal.ZERO);
+			tCharingOrderVO.setElectronicMoney(BigDecimal.ZERO);
+			tCharingOrderVO.setServiceMoney(BigDecimal.ZERO);
 		}
-		tCharingOrderVO.setTotal(total);
-		tCharingOrderVO.setTime(time);
-		tCharingOrderVO.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
-		tCharingOrderVO.setElectronicMoney(electronicMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
-		tCharingOrderVO.setServiceMoney(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
 		pageInfo.setRecords(list);
 		tCharingOrderVO.setList(pageInfo);
         return tCharingOrderVO;
@@ -1730,7 +1736,7 @@
 			}
 			// 获取开始SOC 结束soc
 			if (chargingOrderListVO.getCode()!=null){
-				List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
+				List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode());
 
 			if (data6!=null && !data6.isEmpty()){
 				int min = 100;
@@ -2039,7 +2045,7 @@
 
 		// 获取开始SOC 结束soc
 		if (chargingOrder.getCode()!=null){
-			List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
+			List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode());
 			if (data6!=null){
 				for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
 					if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
@@ -2113,7 +2119,6 @@
 	 * @param query
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
 		if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
 			//获取当前的计费策略
@@ -2139,10 +2144,6 @@
 			chargingOrder.setChargingCapacity(query.getCharging_degree());
 			chargingOrder.setElectricity(query.getCharging_degree());
 			chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
-			BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder1.getCode()).getData();
-			if(null != data){
-				chargingOrder.setNeedElec(data.getBms_current_requirements());
-			}
 			this.updateById(chargingOrder);
 		}
 	}
@@ -2153,7 +2154,6 @@
 	 * @param orderCode
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public void endCharge(String orderCode, Integer endMode) {
 		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
 		TChargingOrder chargingOrder = new TChargingOrder();
@@ -2178,7 +2178,6 @@
 	 * @param vo
 	 */
 	@Override
-	@GlobalTransactional(rollbackFor = Exception.class)
 	public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
 		if(null == chargingOrder){
@@ -2395,7 +2394,7 @@
 		TChargingOrder order = new TChargingOrder();
 		order.setId(chargingOrder.getId());
 		order.setAppUserId(chargingOrder.getAppUserId());
-		UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+		UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode());
 		if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){
 			Integer soc = uploadRealTimeMonitoringData.getSoc();
 			if(soc >= 98){
@@ -2619,6 +2618,36 @@
 				
 			}
 		}
+		
+		//添加汇总统计数据
+		List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", chargingOrder.getId()));
+		BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal serviceMoney = BigDecimal.ZERO;
+		BigDecimal paymentMoney = BigDecimal.ZERO;
+		long time = 0;
+		if (!chargingOrder.getOrderSource().equals(2)) {
+			serviceMoney = serviceMoney.add(service_reduce);
+			paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+		}else{
+			serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+			paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
+		}
+		if (chargingOrder.getStartTime()!=null && chargingOrder.getEndTime()!=null){
+			LocalDateTime startTime = chargingOrder.getStartTime();
+			LocalDateTime endTime = chargingOrder.getEndTime();
+			// 计算时间差 单位秒
+			time = ChronoUnit.SECONDS.between(startTime, endTime);
+		}
+		TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
+		summaryData.setChargingOrderId(chargingOrder.getId());
+		summaryData.setChargingCapacity(chargingCapacity);
+		summaryData.setChargingDuration(time);
+		summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+		chargingOrderSummaryDataService.save(summaryData);
 		return R.ok();
 	}
 	
@@ -3959,7 +3988,7 @@
 				.ne(TChargingOrder::getElectricity, 0).in(TChargingOrder::getStatus, Arrays.asList(4, 5)));
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		for (TChargingOrder order : list) {
-			TransactionRecord transactionRecord = transactionRecordClient.findTransactionRecord(order.getCode()).getData();
+			TransactionRecord transactionRecord = transactionRecordService.findOne(order.getCode());
 			Map<String, Object> map = new HashMap<>();
 			map.put("order", order);
 			map.put("transactionRecord", transactionRecord);
@@ -3984,4 +4013,48 @@
 		tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
 		return R.ok();
 	}
+	
+	
+	
+	
+	public R addChargingOrderSummaryData(){
+		List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+		List<TChargingOrder> list1 = this.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0));
+		for (TChargingOrder chargingOrderVO : list1) {
+			if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){
+				continue;
+			}
+			List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
+			BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal serviceMoney = new BigDecimal("0");
+			BigDecimal paymentMoney = new BigDecimal("0");
+			if (!chargingOrderVO.getOrderSource().equals(2)) {
+				serviceMoney = serviceMoney.add(service_reduce);
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce);
+			}else{
+				serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
+				paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")));
+			}
+			Long time = 0L;
+			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+				LocalDateTime startTime = chargingOrderVO.getStartTime();
+				LocalDateTime endTime = chargingOrderVO.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				time+=between;
+			}
+			
+			TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData();
+			summaryData.setChargingOrderId(chargingOrderVO.getId());
+			summaryData.setChargingCapacity(chargingCapacity);
+			summaryData.setChargingDuration(time);
+			summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN));
+			chargingOrderSummaryDataService.save(summaryData);
+		}
+		return R.ok();
+	}
 }

--
Gitblit v1.7.1