From 1266ed302b259f09a9370bc4315316b8a212b5d0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期日, 26 一月 2025 11:42:35 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  286 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 241 insertions(+), 45 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 30f0176..461958a 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
@@ -32,6 +32,7 @@
 import com.ruoyi.integration.api.feignClient.*;
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
+import com.ruoyi.integration.api.vo.StartChargeResult;
 import com.ruoyi.order.api.dto.SettlementConfirmAdd;
 import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
 import com.ruoyi.order.api.feignClient.AccountingStrategyOrderClient;
@@ -80,6 +81,7 @@
 import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.time.format.TextStyle;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.WeekFields;
 import java.util.*;
 import java.util.concurrent.*;
@@ -140,7 +142,7 @@
 	private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
 	
 	@Resource
-	private ChargingHandshakeClient chargingHandshakeClient;
+	private TCECClient tcecClient;
 
 	@Resource
 	private SendMessageClient sendMessageClient;
@@ -201,6 +203,9 @@
 	
 	//计数器
 	private Map<String, Integer> boot_failed_map = new HashMap<>();
+	
+	@Resource
+	private OperatorClient operatorClient;
 
 
 
@@ -464,7 +469,7 @@
 		chargingOrder.setRechargeAmount(addChargingOrder.getPaymentAmount());
 		chargingOrder.setAppCouponId(addChargingOrder.getAppUserCouponId());
 		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
-		chargingOrder.setOrderSource(0);
+		chargingOrder.setOrderSource(1);
 		chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
 		
 		Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
@@ -743,6 +748,10 @@
 			}
 			this.updateById(order);
 			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			//推送三方平台订单状态
+			if(2 == chargingOrder.getOrderSource()){
+				tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+			}
 			return true;
 		}else{
 			Integer counter = boot_failed_map.get(code);
@@ -773,6 +782,10 @@
 			order.setEndMode(0);
 			this.updateById(order);
 			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			//推送三方平台订单状态
+			if(2 == chargingOrder.getOrderSource()){
+				tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+			}
 			return true;
 		}
 	}
@@ -832,9 +845,24 @@
 			TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
 			chargingGun.setStatus(4);
 			chargingGunClient.updateChargingGunById(chargingGun);
+			//推送状态给三方平台
+			tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
 		}
 		redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 		this.updateById(order);
+		//推送三方平台启动充电结果
+		if(2 == order.getOrderSource()){
+			StartChargeResult result = new StartChargeResult();
+			result.setStartChargeSeq(order.getStartChargeSeq());
+			result.setStartChargeSeqStat(3 == order.getStatus() ? 2 : 4);
+			result.setConnectorID(order.getChargingGunId().toString());
+			result.setStartTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			Operator operator = operatorClient.getOperatorById(order.getOperatorId()).getData();
+			result.setOperatorID(operator.getOperatorId());
+			tcecClient.notificationStartChargeResult(result);
+			
+			tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+		}
 	}
 	
 	/**
@@ -844,7 +872,7 @@
 	public void refund(String code){
 		log.info(code + ":-------------------充电启动失败,执行退款-------------------");
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
-		if(chargingOrder.getStatus() == 2){
+		if(chargingOrder.getOrderSource() == 1 && chargingOrder.getStatus() == 2){
 			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
 			BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
 			//构建退款明细
@@ -999,7 +1027,6 @@
 		chargingOrder.setStatus(4);
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
-		
 		String code1 = order.getCode();
 		TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
 		//异步线程处理停机
@@ -1014,6 +1041,11 @@
 			log.info(code1 + ":-------------------远程停止充电请求-------------------");
 			log.info(platformStopCharging.toString());
 		});
+		//推送三方平台
+		if(2 == order.getOrderSource()){
+			tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+		}
+		
 		return AjaxResult.success();
 	}
 	
@@ -1147,7 +1179,7 @@
 		TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
 		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, chargingGun.getId())
 				.orderByDesc(TChargingOrder::getEndTime).eq(TChargingOrder::getRechargePaymentStatus, 2).last(" limit 0, 1"));
-		if(null != order && order.getStatus() != 3){
+		if(null != order && order.getStatus() != 4){
 			return;
 		}
 		
@@ -1260,16 +1292,6 @@
 		 BigDecimal refundMoney = new BigDecimal("0");
 		 BigDecimal paymentMoney = new BigDecimal("0");
 		List<String> collect2 = list.stream().map(TChargingOrder::getCode).collect(Collectors.toList());
-		StringBuilder stringBuilder2 = new StringBuilder();
-		List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData2 = new ArrayList<>();
-		for (String s : collect2) {
-			stringBuilder2.append(s).append(",");
-		}
-		if (stringBuilder2.length()>0){
-			StringBuilder ids = stringBuilder2.deleteCharAt(stringBuilder2.length() - 1);
-			uploadRealTimeMonitoringData2 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(ids.toString()).getData();
-
-		}
 		for (ChargingOrderVO chargingOrderVO : list) {
 			if (roleType == 2){
 				for (Integer siteId : siteIds) {
@@ -1296,11 +1318,13 @@
 			// 充电订单 明细记录
 			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
 					.eq("charging_order_id", chargingOrderVO.getId()));
-			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringData2.stream().filter(e -> e.getTransaction_serial_number().equals(chargingOrderVO.getCode()))
-					.findFirst().orElse(null);
-			if (data5!=null && data5.getCumulative_charging_time()!=null){
-				long l = data5.getCumulative_charging_time() * 60L;
-				chargingOrderVO.setChargingSecond(l);
+			if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){
+				LocalDateTime startTime = chargingOrderVO.getStartTime();
+				LocalDateTime endTime = chargingOrderVO.getEndTime();
+				// 计算时间差 单位秒
+				long between = ChronoUnit.SECONDS.between(startTime, endTime);
+				chargingOrderVO.setChargingSecond(between);
+
 			}
 			// 充电时段数
 			int size = chargingOrderId.size();
@@ -1321,17 +1345,13 @@
 
 			}
 		}
-		List<String> collect = list1.stream().map(TChargingOrder::getCode).collect(Collectors.toList());
-		StringBuilder stringBuilder = new StringBuilder();
-		List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = new ArrayList<>();
-		for (String s : collect) {
-			stringBuilder.append(s).append(",");
-		}
-		if (stringBuilder.length()>0){
-			StringBuilder ids = stringBuilder.deleteCharAt(stringBuilder.length() - 1);
-			uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(ids.toString()).getData();
 
-		}
+
+		List<Long> orderIds = list1.stream().map(TChargingOrder::getId).collect(Collectors.toList());
+		if(orderIds.isEmpty())orderIds.add(-1L);
+		List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
+				.in(TChargingOrderRefund::getChargingOrderId, orderIds)
+				.eq(TChargingOrderRefund::getRefundStatus,2).list();
 
 		for (ChargingOrderVO chargingOrderVO : list1) {
 			paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
@@ -1339,19 +1359,17 @@
 			if (chargingOrderVO.getChargingCapacity()!=null){
 				total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
 			}
-			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringData.stream().filter(e -> e.getTransaction_serial_number().equals(chargingOrderVO.getCode()))
-					.findFirst().orElse(null);
-			if (data5!=null && data5.getCumulative_charging_time()!=null){
-				long l = data5.getCumulative_charging_time() * 60L;
-				chargingOrderVO.setChargingSecond(l);
-				time+=l;
+			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 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2)
-					.eq(TChargingOrderRefund::getChargingOrderId, chargingOrderVO.getId()).list();
+			List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
+					.collect(Collectors.toList());
 			for (TChargingOrderRefund tChargingOrderRefund : list2) {
-				if (tChargingOrderRefund.getRefundStatus()==2){
 					refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
-				}
 			}
 			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
 			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
@@ -1640,6 +1658,21 @@
 		// 不分页
 		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.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){
+				TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData();
+				TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData();
+				if (data2 != null && data1 != null) {
+					chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
+				}
+			}
+		}
 		chargingOrderTimeVO.setExportList(list1);
 		chargingOrderTimeVO.setOrderCount(list1.size());
 		// 计算充电总度数
@@ -2251,6 +2284,14 @@
 		this.updateById(order);
 		chargingOrder = this.getById(order.getId());
 		
+		//推送三方平台
+		if(2 == chargingOrder.getOrderSource()){
+			tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+			tcecClient.notificationStopChargeResult(chargingOrder.getStartChargeSeq(), chargingOrder.getChargingGunId().toString(),
+					chargingOrder.getOperatorId());
+			tcecClient.notificationChargeOrderInfo(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+		}
+		
 		//开始将优惠券优惠的金额添加到明细中
 		BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
 		if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){
@@ -2272,6 +2313,8 @@
 		chargingGun.setStatus(2);
 		chargingGun.setChargingPower(BigDecimal.ZERO);
 		chargingGunClient.updateChargingGunById(chargingGun);
+		//推送状态给三方平台
+		tcecClient.pushChargingGunStatus(chargingGun.getId(), chargingGun.getStatus());
 		
 		//添加积分
 		TIntegralRule integralRule = integralRuleClient.getSet().getData();
@@ -2309,6 +2352,7 @@
 		referralReward(chargingOrder);
 		
 		//开始构建退款费用
+		refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN);
 		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
 			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
 			//构建退款明细
@@ -2346,15 +2390,13 @@
 			if(2 == rechargePaymentType){
 				RefundReq dto = new RefundReq();
 				dto.setOutTradeNo(chargingOrder.getCode());
-				dto.setOutRequestNo(chargingOrderRefund.getCode());
+				dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
 				dto.setRefundAmount(refundAmount.toString());
 				dto.setRefundReason("充电完成退款");
 				RefundResp resp = aliPaymentClient.refund(dto).getData();
 				if(null != resp){
-					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
-					if(success.isSuccess()){
-						chargingOrderRefundService.save(chargingOrderRefund);
-					}
+					chargingOrderRefundService.save(chargingOrderRefund);
+					this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
 				}
 			}
 			
@@ -3973,4 +4015,158 @@
 	public Long countCar(List<String> brands) {
 		return this.baseMapper.countCar(brands);
 	}
+	
+	
+	/**
+	 * 添加三方平台充电订单数据
+	 * @param query
+	 */
+	@Override
+	public R addTripartitePlatformOrder(AddTripartitePlatformOrder query) {
+		//检查当前枪是否是正在使用中
+		TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, query.getChargingGunId())
+				.in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0));
+		if(null != one){
+			return R.fail("充电枪正在充电中,启动失败");
+		}
+		
+		//构建新的待支付订单
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+		TChargingOrder chargingOrder = new TChargingOrder();
+		String code = "CD" + Double.valueOf(Math.random() * 1000).intValue() + sdf.format(new Date());
+		chargingOrder.setCode(code);
+		chargingOrder.setOrderType(1);
+		chargingOrder.setOrderClassification(1);
+		TChargingGun tChargingGun = chargingGunClient.getChargingGunById(query.getChargingGunId()).getData();
+		TChargingPile chargingPile = chargingPileClient.getChargingPileById(tChargingGun.getChargingPileId()).getData();
+		chargingOrder.setSiteId(tChargingGun.getSiteId());
+		chargingOrder.setChargingPileId(tChargingGun.getChargingPileId());
+		chargingOrder.setChargingGunId(query.getChargingGunId());
+		chargingOrder.setRechargePaymentType(query.getRechargePaymentType());
+		chargingOrder.setRechargePaymentStatus(2);
+		chargingOrder.setRechargeAmount(query.getPaymentAmount());
+		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
+		chargingOrder.setOrderSource(2);
+		Operator operator = operatorClient.getOperator(query.getOperatorId()).getData();
+		chargingOrder.setOperatorId(operator.getId());
+		chargingOrder.setAppUserId(operator.getId().longValue());
+		chargingOrder.setTripartitePlatformName(operator.getName());
+		chargingOrder.setStartChargeSeq(query.getStartChargeSeq());
+		//车辆信息
+		if(StringUtils.hasLength(query.getPlateNum())){
+			TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(query.getPlateNum()).getData();
+			if(null != appUserCar){
+				chargingOrder.setAppUserCarId(appUserCar.getId());
+			}
+		}
+		
+		
+		chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
+		chargingOrder.setStatus(2);
+		chargingOrder.setPayTime(LocalDateTime.now());
+		chargingOrder.setChargeAmount(chargingOrder.getRechargeAmount());
+		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
+		this.save(chargingOrder);
+		
+		Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
+		if(null == accountingStrategyId){
+			Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
+			//查询站点上面的计费策略
+			accountingStrategyId = site.getAccountingStrategyId();
+		}
+		TAccountingStrategy accountingStrategy = accountingStrategyClient.getAccountingStrategyById(accountingStrategyId).getData();
+		
+		//添加订单的计费策略
+		List<TAccountingStrategyDetail> strategyDetailList = accountingStrategyDetailClient.getListByAccountingStrategyId(accountingStrategyId).getData();
+		AccountingStrategyOrder accountingStrategyOrder = new AccountingStrategyOrder();
+		BeanUtils.copyProperties(accountingStrategy, accountingStrategyOrder);
+		accountingStrategyOrder.setChargingOrderId(chargingOrder.getId());
+		accountingStrategyOrderService.save(accountingStrategyOrder);
+		List<AccountingStrategyDetailOrder> list1 = new ArrayList<>();
+		for (TAccountingStrategyDetail tAccountingStrategyDetail : strategyDetailList) {
+			AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder();
+			BeanUtils.copyProperties(tAccountingStrategyDetail, accountingStrategyDetailOrder);
+			accountingStrategyDetailOrder.setChargingOrderId(chargingOrder.getId());
+			list1.add(accountingStrategyDetailOrder);
+		}
+		accountingStrategyDetailOrderService.saveBatch(list1);
+		
+		
+		//添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
+		PreChargeCheck preChargeCheck = new PreChargeCheck();
+		preChargeCheck.setElectronicLockLock(false);
+		preChargeCheck.setInsulationTesting(false);
+		preChargeCheck.setSecureConnectionDetection(false);
+		preChargeCheck.setStartupSuccess(1);
+		String key = "AQJC_" + chargingOrder.getChargingGunId();
+		redisService.setCacheObject(key, preChargeCheck, 24L, TimeUnit.HOURS);
+		
+		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+		//调用远程启动充电消息
+		PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+		platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
+		platformStartCharging.setCharging_pile_code(chargingPile.getCode());
+		platformStartCharging.setCharging_gun_code(tChargingGun.getCode());
+		//使用订单id作为逻辑卡号
+		platformStartCharging.setCard_number(chargingOrder.getId().toString());
+		platformStartCharging.setAccount_balance(rechargeAmount);
+		log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
+		sendMessageClient.platformStartCharging(platformStartCharging);
+		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+		Long id = chargingOrder.getId();
+		//执行5分钟的定时任务检测
+		ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+		scheduler.scheduleAtFixedRate(()->{
+			if(timingDetection(id)){
+				scheduler.shutdown();
+			}
+		}, 5, 1, TimeUnit.SECONDS);
+		
+		//推送三方平台订单状态
+		tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
+		return R.ok();
+	}
+	
+	
+	/**
+	 * 三方平台停止充电操作
+	 * @param startChargeSeq
+	 * @return
+	 */
+	@Override
+	public R tripartitePlatformStopCharge(String startChargeSeq) {
+		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getStartChargeSeq, startChargeSeq));
+		Integer status = order.getStatus();
+		if(status != 3){
+			return R.fail("还未开始充电");
+		}
+		if(status == 4 || status == 5){
+			return R.fail("不能重复操作");
+		}
+		TChargingOrder chargingOrder = new TChargingOrder();
+		chargingOrder.setId(order.getId());
+		chargingOrder.setAppUserId(order.getOperatorId().longValue());
+		chargingOrder.setEndTime(LocalDateTime.now());
+		chargingOrder.setStatus(4);
+		chargingOrder.setEndMode(1);
+		this.updateById(chargingOrder);
+		
+		tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
+		
+		String code1 = order.getCode();
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
+		//异步线程处理停机
+		ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
+		cachedThreadPool.execute(()->{
+			//调用硬件停止充电,停止成功后开始计算费用退款
+			TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
+			PlatformStopCharging platformStopCharging = new PlatformStopCharging();
+			platformStopCharging.setCharging_pile_code(chargingPile.getCode());
+			platformStopCharging.setCharging_gun_code(chargingGun.getCode());
+			sendMessageClient.platformStopCharging(platformStopCharging);
+			log.info(code1 + ":-------------------远程停止充电请求-------------------");
+			log.info(platformStopCharging.toString());
+		});
+		return R.ok();
+	}
 }

--
Gitblit v1.7.1