From 7ea47db47d3e039e25531cd511d8d7b1342ccfc0 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 23 十月 2024 20:04:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  137 ++++++++++++++++++++++++++++-----------------
 1 files changed, 85 insertions(+), 52 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 caa7495..87c895b 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
@@ -889,57 +889,48 @@
 		//处理用户标签数据
 		List<TUserTag> data = userTagClient.getAllUserTag().getData();
 		//累计充电次数
-		long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
-				.eq(TChargingOrder::getRechargePaymentStatus, 2).isNotNull(TChargingOrder::getPaymentAmount).eq(TChargingOrder::getDelFlag, 0));
 		List<TUserTag> userTagList1 = data.stream().filter(s -> s.getStandardCondition() == 1).collect(Collectors.toList());
-		int old_times = 0;
-		Integer userTagId = null;
 		for (TUserTag tUserTag : userTagList1) {
 			Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times");
-			//加上本次充电
-			//获取最大值标签
-			if((count1 + 1) >= times && old_times < times){
-				userTagId = tUserTag.getId();
-				old_times = times;
-			}
-		}
-		if(null != userTagId){
 			TAppUserTag appUserTag = new TAppUserTag();
 			appUserTag.setAppUserId(chargingOrder.getAppUserId());
-			appUserTag.setUserTagId(userTagId);
+			appUserTag.setUserTagId(tUserTag.getId());
 			TAppUserTag data1 = appUserTagClient.getUserTag(appUserTag).getData();
-			if(null == data1){
+			
+			String start = tUserTag.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+			String end = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+			long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
+					.eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0));
+			if(null == data1 && count1 >= times){
 				data1 = new TAppUserTag();
 				data1.setAppUserId(chargingOrder.getAppUserId());
-				data1.setUserTagId(userTagId);
+				data1.setUserTagId(tUserTag.getId());
 				data1.setCreateTime(LocalDateTime.now());
 				appUserTagClient.addUserTag(data1);
 			}
 		}
-		//充电评率
+		//充电频率
 		List<TUserTag> userTagList2 = data.stream().filter(s -> s.getStandardCondition() == 2).collect(Collectors.toList());
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		for (TUserTag tUserTag : userTagList2) {
 			TAppUserTag appUserTag = new TAppUserTag();
 			appUserTag.setAppUserId(chargingOrder.getAppUserId());
 			appUserTag.setUserTagId(tUserTag.getId());
 			TAppUserTag data1 = appUserTagClient.getUserTag(appUserTag).getData();
-			if(null == data1){
-				Integer day = JSON.parseObject(tUserTag.getConditions()).getInteger("day");
-				Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times");
-				Calendar start = Calendar.getInstance();
-				start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + day);
-				count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
-						.eq(TChargingOrder::getRechargePaymentStatus, 2).isNotNull(TChargingOrder::getPaymentAmount)
-						.between(TChargingOrder::getStartTime, sdf.format(start.getTime()), sdf.format(new Date())).eq(TChargingOrder::getDelFlag, 0));
-				//加上本次充电
-				if(count1 >= times){
-					data1 = new TAppUserTag();
-					data1.setAppUserId(chargingOrder.getAppUserId());
-					data1.setUserTagId(tUserTag.getId());
-					data1.setCreateTime(LocalDateTime.now());
-					appUserTagClient.addUserTag(data1);
-				}
+			
+			Integer day = JSON.parseObject(tUserTag.getConditions()).getInteger("day");
+			Integer times = JSON.parseObject(tUserTag.getConditions()).getInteger("times");
+			LocalDateTime endTime = LocalDateTime.now();
+			endTime.plusDays(day);
+			String start = tUserTag.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+			String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+			long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
+					.eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0));
+			if(null == data1 && count1 >= times){
+				data1 = new TAppUserTag();
+				data1.setAppUserId(chargingOrder.getAppUserId());
+				data1.setUserTagId(tUserTag.getId());
+				data1.setCreateTime(LocalDateTime.now());
+				appUserTagClient.addUserTag(data1);
 			}
 		}
 	}
@@ -1073,6 +1064,7 @@
 			endTime2 = split[1];
 		}
 		PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+		PageInfo<ChargingOrderVO> pageInfo1 = new PageInfo<>(1,9999999);
 
 		if (StringUtils.hasLength(dto.getPhone())){
 			List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
@@ -1083,12 +1075,15 @@
 			dto.setUserIds(data);
 		}
 		List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+		List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
 		 BigDecimal total = new BigDecimal("0");
 		 long time = 0L;
 		 BigDecimal income = new BigDecimal("0");
 		 BigDecimal electronicMoney = new BigDecimal("0");
 		 BigDecimal serviceMoney = new BigDecimal("0");
 		for (ChargingOrderVO chargingOrderVO : list) {
+			chargingOrderVO.setCommissionAmount(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
+			chargingOrderVO.setPlatFormMoney(chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.006")));
 			chargingOrderVO.setUid(chargingOrderVO.getId()+"");
 			TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
 			TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
@@ -1100,10 +1095,6 @@
 			}
 			if (data2!=null && data3!=null){
 				chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName());
-
-			}
-			if (chargingOrderVO.getChargingCapacity()!=null){
-				total = total.add(chargingOrderVO.getElectricity());
 			}
 			// 充电订单 明细记录
 			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
@@ -1112,14 +1103,6 @@
 			if (data5!=null){
 				long l = data5.getCumulative_charging_time() * 60L;
 				chargingOrderVO.setChargingSecond(l);
-				time+=l;
-			}
-			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
-			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
-
-			income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence()));
-			if (chargingOrderVO.getRefundAmount()!=null){
-				income = income.subtract(chargingOrderVO.getRefundAmount());
 			}
 			// 充电时段数
 			int size = chargingOrderId.size();
@@ -1139,6 +1122,27 @@
 				}
 
 			}
+		}
+		for (ChargingOrderVO chargingOrderVO : list1) {
+			if (chargingOrderVO.getChargingCapacity()!=null){
+				total = total.add(chargingOrderVO.getElectricity());
+			}
+			// 充电订单 明细记录
+			List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
+					.eq("charging_order_id", chargingOrderVO.getId()));
+			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
+			if (data5!=null){
+				long l = data5.getCumulative_charging_time() * 60L;
+				chargingOrderVO.setChargingSecond(l);
+				time+=l;
+			}
+			electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence());
+			serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge());
+
+			income = income.add(chargingOrderVO.getOrderAmount());
+
+
+
 		}
 		tCharingOrderVO.setTotal(total);
 		tCharingOrderVO.setTime(time);
@@ -1252,7 +1256,7 @@
 				dto.setUserIds(carIds);
 			}
 		}
-		if (StringUtils.hasLength(dto.getPhone())){
+		if (StringUtils.hasLength(dto.getLicensePlate())){
 			List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData();
 			if(data!=null){
 				if (!data.isEmpty()){
@@ -1270,6 +1274,12 @@
 		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) {
+			chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
+			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getOrderAmount());
+			BigDecimal bigDecimal = new BigDecimal("0.006");
+			if (chargingOrderListVO.getServiceCharge()!=null){
+				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getServiceCharge().multiply(bigDecimal));
+			}
 			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount()));
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
 			List<Integer> integers = new ArrayList<>();
@@ -1327,6 +1337,9 @@
 			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());
@@ -1387,9 +1400,9 @@
 		BigDecimal ping = new BigDecimal("0");
 		BigDecimal gu = new BigDecimal("0");
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
-			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getChargingCapacity());
+			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
 
-			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getOrderAmount());
 			if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
 			if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
 			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -1476,6 +1489,12 @@
 		TChargingOrder chargingOrder= this.getById(uid);
 
 		ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
+
+		chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
+		BigDecimal bigDecimal = new BigDecimal("0.006");
+		if (chargingOrder.getServiceCharge()!=null){
+			chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getServiceCharge().multiply(bigDecimal));
+		}
 		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
 		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
 		if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){
@@ -1515,6 +1534,13 @@
 		if (chargingOrder.getCode()!=null){
 			List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
 			if (data6!=null){
+				for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+					if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
+							uploadRealTimeMonitoringData.getOutput_voltage()!=null){
+						uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
+								.multiply(uploadRealTimeMonitoringData.getOutput_current()));
+					}
+				}
 				if (!data6.isEmpty()){
 					// 第一条数据soc为开始 最后一条数据soc为结束soc
 					chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
@@ -1782,6 +1808,9 @@
 						order.setCouponDiscountAmount(couponDiscountAmount);
 						payAmount = payAmount.subtract(couponDiscountAmount);
 					}
+					
+					appCoupon.setStatus(2);
+					appCouponClient.updateAppCoupon(appCoupon);
 				}else{
 					order.setAppCouponId(null);
 					order.setCouponDiscountAmount(BigDecimal.ZERO);
@@ -1804,6 +1833,9 @@
 						order.setCouponDiscountAmount(divide);
 						payAmount = payAmount.subtract(divide);
 					}
+					
+					appCoupon.setStatus(2);
+					appCouponClient.updateAppCoupon(appCoupon);
 				}else{
 					order.setAppCouponId(null);
 					order.setCouponDiscountAmount(BigDecimal.ZERO);
@@ -2592,12 +2624,13 @@
 		info.setRefundAmount(chargingOrder.getRefundAmount());
 		LocalDateTime startTime = chargingOrder.getStartTime();
 		LocalDateTime endTime = chargingOrder.getEndTime();
-		info.setStartDay(startTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + startTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
+		info.setStartDay(startTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " " + startTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
 		info.setStartHour(startTime.format(DateTimeFormatter.ofPattern("HH:mm")));
-		info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
+		info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " " + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
 		info.setEndHour(endTime.format(DateTimeFormatter.ofPattern("HH:mm")));
-		int hour = endTime.getHour() - startTime.getHour();
-		int second = endTime.getMinute() - startTime.getMinute();
+		long time = (endTime.toEpochSecond(ZoneOffset.UTC) - startTime.toEpochSecond(ZoneOffset.UTC)) / 60;
+		long hour = time / 60;
+		long second = time % 60;
 		info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second));
 		return info;
 	}

--
Gitblit v1.7.1