From 2e43d137c7832e149f3df4145aa7fcca2153ef9c Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期六, 31 八月 2024 16:52:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  270 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 247 insertions(+), 23 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 e8b1df8..dbb8223 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
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.AppUserCarClient;
 import com.ruoyi.account.api.feignClient.AppUserClient;
@@ -17,6 +18,8 @@
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
@@ -31,13 +34,17 @@
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.order.api.model.TChargingOrderRefund;
+import com.ruoyi.order.api.model.TOrderEvaluate;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.vo.ChargingOrderListVO;
+import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
 import com.ruoyi.order.api.vo.TCharingOrderVO;
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
 import com.ruoyi.order.service.TChargingOrderService;
+import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
 import com.ruoyi.payment.api.vo.*;
@@ -50,6 +57,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
@@ -78,7 +86,11 @@
 	private AppUserCarClient appUserCarClient;
 	@Resource
 	private AppUserClient appUserClient;
-	
+
+	@Resource
+	private ChargingPileClient chargingPileClient;
+
+
 	@Resource
 	private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
 	
@@ -91,8 +103,7 @@
 	@Resource
 	private AliPaymentClient aliPaymentClient;
 	
-	@Resource
-	private ChargingPileClient chargingPileClient;
+
 	
 
 	@Resource
@@ -106,10 +117,13 @@
 	
 	@Resource
 	private ChargingHandshakeClient chargingHandshakeClient;
-	
+
 	@Resource
 	private SendMessageClient sendMessageClient;
-	
+
+	@Resource
+	private TOrderEvaluateService orderEvaluateService;
+
 	
 	
 
@@ -140,6 +154,9 @@
 			BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
 			myChargingOrderList.setPayMoney(payMoney);
 			myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			long count = orderEvaluateService.count(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderType, 1)
+					.eq(TOrderEvaluate::getOrderId, tChargingOrder.getId()).eq(TOrderEvaluate::getDelFlag, 0));
+			myChargingOrderList.setEvaluate(count + 1L);
 			orderLists.add(myChargingOrderList);
 		}
 		list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), null, null);
@@ -248,6 +265,8 @@
 			BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
 			myChargingOrderList.setPayMoney(payMoney);
 			myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			myChargingOrderList.setElectricCharge(tChargingOrder.getElectrovalence());
+			myChargingOrderList.setServiceCharge(tChargingOrder.getServiceCharge());
 			list.add(myChargingOrderList);
 		}
 		return list;
@@ -425,7 +444,7 @@
 		//根据当前充值的金额和计费模板算出充电的金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
 		//计算充电金额,会员需要将折扣金额加入到充电总金额中
-		
+
 //		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
 //		if(){
 //			appUser.getVipId()
@@ -506,21 +525,18 @@
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
 		//调用硬件停止充电,停止成功后开始计算费用退款
-		
-		
-		
 		// todo 待完善
 		return AjaxResult.success();
 	}
 
-	
-	
+
+
 	public void endCharge(){
-	
+
 	}
-	
-	
-	
+
+
+
 
     @Override
     public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
@@ -559,6 +575,12 @@
 		 BigDecimal electronicMoney = new BigDecimal("0");
 		 BigDecimal serviceMoney = new BigDecimal("0");
 		for (ChargingOrderVO chargingOrderVO : list) {
+			TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
+			TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
+			if (data2!=null && data3!=null){
+				chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName());
+
+			}
 			if (chargingOrderVO.getChargingCapacity()!=null){
 				total = total.add(chargingOrderVO.getChargingCapacity());
 			}
@@ -569,14 +591,8 @@
 			BigDecimal electronicMoney1 = new BigDecimal("0");
 			// 单个订单累计服务费
 			BigDecimal serviceMoney1 = new BigDecimal("0");
-			LocalDateTime startTime = chargingOrderVO.getStartTime();
-			LocalDateTime endTime = chargingOrderVO.getEndTime();
-			// 计算时间差 秒 充电时长
-			if (startTime!=null && endTime!=null){
-				long between = ChronoUnit.SECONDS.between(startTime, endTime);
-				chargingOrderVO.setChargingSecond(between);
-				time += between;
-			}
+			// todo 调用第三方获取充电时长 秒
+
 			// 总收入
 			if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){
 				income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount()));
@@ -641,4 +657,212 @@
 
 		return R.ok(pageInfo);
 	}
+
+	@Override
+	public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) {
+
+		return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto);
+	}
+
+	@Override
+	public List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds) {
+		return this.baseMapper.charge(sixBefore,siteIds);
+	}
+
+	@Override
+	public List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore) {
+		return this.baseMapper.circle(siteIds,sixBefore);
+	}
+
+	@Override
+	public Map<String, BigDecimal> countAll(LocalDate sixBefore) {
+		return this.baseMapper.countAll(sixBefore);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getSumByType(List<Long> chargingOrderIds) {
+		return this.baseMapper.getSumByType(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getDateData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getDateData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getWeekData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getWeekData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getMonthData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getYearData(chargingOrderIds);
+	}
+
+	@Override
+	public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
+		String startTime1 = null;
+		String startTime2 = null;
+		String endTime1 = null;
+		String endTime2 = null;
+
+		if (StringUtils.hasLength(dto.getStartTime())){
+			String[] split = dto.getStartTime().split(" - ");
+			startTime1 = split[0];
+			startTime2 = split[1];
+		}
+		if (StringUtils.hasLength(dto.getEndTime())){
+			String[] split = dto.getEndTime().split(" - ");
+			endTime1 = split[0];
+			endTime2 = split[1];
+		}
+		ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO();
+
+
+		PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+		List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+		for (ChargingOrderListVO chargingOrderListVO : list) {
+			List<Integer> integers = new ArrayList<>();
+			integers.add(chargingOrderListVO.getSiteId());
+			List<Site> data = siteClient.getSiteByIds(integers).getData();
+			if (!data.isEmpty()) {
+				chargingOrderListVO.setSiteName(data.get(0).getName());
+			}
+			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());
+			}
+			// todo 充电时长 调用第三方获取
+			TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
+			List<Long> carId = new ArrayList<>();
+			if (chargingOrderListVO.getAppUserCarId() != null) {
+				carId.add(chargingOrderListVO.getAppUserCarId());
+				List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
+				if (!data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
+			}
+			if (data3 != null) chargingOrderListVO.setPhone(data3.getPhone());
+			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
+					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
+			// 尖峰平谷充电量 度数
+			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) {
+				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);
+			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"))+"%(谷)");
+		}
+		// 不分页
+		List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2);
+		chargingOrderTimeVO.setOrderCount(list1.size());
+		// 计算充电总度数
+		BigDecimal electronic = new BigDecimal("0");
+		// 支付金额
+		BigDecimal paymentAmount = new BigDecimal("0");
+		// 电费
+		BigDecimal electrovalence = new BigDecimal("0");
+		// 服务费
+		BigDecimal serviceCharge = new BigDecimal("0");
+		// 尖峰平谷充电到账
+		BigDecimal jianElectronic = new BigDecimal("0");
+		BigDecimal fengElectronic = new BigDecimal("0");
+		BigDecimal pingElectronic = new BigDecimal("0");
+		BigDecimal guElectronic   = new BigDecimal("0");
+		// 尖峰平谷服务费
+		BigDecimal jianService = new BigDecimal("0");
+		BigDecimal fengService = new BigDecimal("0");
+		BigDecimal pingService = new BigDecimal("0");
+		BigDecimal guService = new BigDecimal("0");
+		// 尖峰平谷充电量 度数
+		BigDecimal jian = new BigDecimal("0");
+		BigDecimal feng = new BigDecimal("0");
+		BigDecimal ping = new BigDecimal("0");
+		BigDecimal gu = new BigDecimal("0");
+		for (ChargingOrderListVO chargingOrderListVO : list1) {
+			electronic = electronic.add(chargingOrderListVO.getChargingCapacity());
+			paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+			electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
+			serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
+			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
+					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
+			for (TChargingOrderAccountingStrategy temp : list2) {
+				switch (temp.getType()){
+					case 1:
+						jian = jian.add(temp.getChargingCapacity());
+						jianElectronic = jianElectronic.add(temp.getChargingCapacity());
+						jianService = jianService.add(temp.getChargingCapacity());
+						break;
+					case 2:
+						feng = feng.add(temp.getChargingCapacity());
+						fengElectronic = fengElectronic.add(temp.getChargingCapacity());
+						fengService = fengService.add(temp.getChargingCapacity());
+						break;
+					case 3:
+						ping = ping.add(temp.getChargingCapacity());
+						pingElectronic = pingElectronic.add(temp.getChargingCapacity());
+						pingService = pingService.add(temp.getChargingCapacity());
+						break;
+					case 4:
+						gu = gu.add(temp.getChargingCapacity());
+						guElectronic = guElectronic.add(temp.getChargingCapacity());
+						guService = guService.add(temp.getChargingCapacity());
+						break;
+				}
+			}
+		}
+
+		chargingOrderTimeVO.setChargingCapacity(electronic);
+		chargingOrderTimeVO.setPaymentAmount(paymentAmount);
+		chargingOrderTimeVO.setElectrovalence(electrovalence);
+		chargingOrderTimeVO.setServiceCharge(serviceCharge);
+		// 计算尖峰平谷充电量占比
+		BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
+		// 计算尖峰平谷服务费占比
+		BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
+		// 计算尖峰平谷充电到账占比
+		BigDecimal add2 = jian.add(feng).add(ping).add(gu);
+		chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
+				+jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+		chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-"
+				+jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+		chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-"
+				+jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+				+gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+		chargingOrderTimeVO.setList(pageInfo);
+		return chargingOrderTimeVO;
+	}
 }

--
Gitblit v1.7.1