From 50ec9ddb9d88b4114ef1b41ed1eab8448ce0bbe1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 02 十一月 2024 15:23:43 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  208 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 129 insertions(+), 79 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 72623e6..003610a 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
@@ -187,6 +187,9 @@
 	
 	@Resource
 	private SecurityDetectionClient securityDetectionClient;
+	
+	@Resource
+	private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
 
 	//计数器
 	private Map<String, Integer> counter_map = new HashMap<>();
@@ -256,11 +259,13 @@
 		myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
 		String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
 		myChargingOrderInfo.setName(name);
-		if(null != chargingOrder.getAppUserCarId()){
-			TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData().get(0);
-			myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
-		}else{
-			myChargingOrderInfo.setLicensePlate("无");
+		if(Objects.nonNull(chargingOrder.getAppUserCarId())){
+			TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData();
+			if(null != tAppUserCar){
+				myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
+			}else{
+				myChargingOrderInfo.setLicensePlate("无");
+			}
 		}
 		myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
 		myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
@@ -279,9 +284,18 @@
 		if(null != dataList){
 			//在MongoDB中获取数据
 			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
-			List<String> time = dataList.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
-			List<BigDecimal> outputVoltage = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
-			List<BigDecimal> outputCurrent = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
+			List<UploadRealTimeMonitoringData> dataLists = new ArrayList<>();
+			String t = "";
+			for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : dataList) {
+				if(!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)){
+					dataLists.add(uploadRealTimeMonitoringData);
+					t = sdf.format(uploadRealTimeMonitoringData.getCreate_time());
+				}
+			}
+			
+			List<String> time = dataLists.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
+			List<BigDecimal> outputVoltage = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
+			List<BigDecimal> outputCurrent = dataLists.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
 			List<Map<String, Object>> currentAndVoltage = new ArrayList<>();
 			for (int i = 0; i < time.size(); i++) {
 				Map<String, Object> map = new HashMap<>();
@@ -294,8 +308,8 @@
 			}
 			myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
 			//在MongoDB中获取数据
-			List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
-			List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
+			List<Integer> soc = dataLists.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
+			List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList());
 			List<Map<String, Object>> power = new ArrayList<>();
 			for (int i = 0; i < time.size(); i++) {
 				Map<String, Object> map = new HashMap<>();
@@ -687,9 +701,6 @@
 		String key = "AQJC_" + chargingOrder.getChargingGunId();
 		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
 		log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
-		if(null == data || data.size() == 0){
-			return false;
-		}
 		if(data.size() != 0){
 			PlatformStartChargingReply platformStartChargingReply = data.get(1);
 			Integer startup_result = platformStartChargingReply.getStartup_result();
@@ -738,7 +749,7 @@
 				counter = (null == counter ? 0 : counter) + 1;
 				boot_failed_map.put(code, counter);
 				//启动失败
-				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setStartupSuccess(1);
 				preChargeCheck1.setFailureCause(0);
 				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
 				return false;
@@ -1104,12 +1115,12 @@
 				String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
 				appUserIntegralChange.setCode(code);
 				appUserIntegralChange.setAppUserId(appUser1.getId());
-				appUserIntegralChange.setChangeType(5);
+				appUserIntegralChange.setChangeType(4);
 				appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
 				appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
 				appUserIntegralChange.setCreateTime(LocalDateTime.now());
 				appUserIntegralChange.setOrderCode(chargingOrder.getCode());
-				appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+				appUserIntegralChange.setExtension(appUser.getId().toString());
 				appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
 				
 				appUser1.setPoints(appUser1.getPoints() + num1);
@@ -1207,8 +1218,8 @@
 		 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.setCommissionAmount(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
+			chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")));
 			chargingOrderVO.setUid(chargingOrderVO.getId()+"");
 			TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
 			TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
@@ -1400,12 +1411,11 @@
 		List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
 		for (ChargingOrderListVO chargingOrderListVO : list) {
 			chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
-			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
 			BigDecimal bigDecimal = new BigDecimal("0.006");
 			if (chargingOrderListVO.getOrderAmount()!=null){
-				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getOrderAmount().multiply(bigDecimal));
+				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getPaymentAmount().multiply(bigDecimal));
 			}
-			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount());
+			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
 			List<Integer> integers = new ArrayList<>();
 			integers.add(chargingOrderListVO.getSiteId());
@@ -1424,17 +1434,27 @@
 			UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderListVO.getCode()).getData();
 			if (data5!=null){
 				if (data5.getTime_remaining()!=null){
-					chargingOrderListVO.setChargingSecond(data5.getTime_remaining()*60L);
+					chargingOrderListVO.setChargingSecond(data5.getCumulative_charging_time()*60L);
 
 				}
 			}
 			// 获取开始SOC 结束soc
 			if (chargingOrderListVO.getCode()!=null){
 				List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData();
+
 			if (data6!=null && !data6.isEmpty()){
-					// 第一条数据soc为开始 最后一条数据soc为结束soc
-					chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString());
-					chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
+				int min = 100;
+				int max = 0;
+				for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
+					if (uploadRealTimeMonitoringData.getSoc()>max){
+						max = uploadRealTimeMonitoringData.getSoc();
+					}
+					if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){
+						min = uploadRealTimeMonitoringData.getSoc();
+					}
+				}
+					chargingOrderListVO.setEndSoc(max+"");
+					chargingOrderListVO.setStartSoc(min+"");
 				}
 			}
 
@@ -1614,9 +1634,7 @@
 	@Override
 	public ChargingOrderListInfoVO chargingInfo(String uid) {
 		TChargingOrder chargingOrder= this.getById(uid);
-
 		ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
-
 		chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
 		BigDecimal bigDecimal = new BigDecimal("0.006");
 		if (chargingOrder.getOrderAmount()!=null){
@@ -1665,24 +1683,32 @@
 					if (uploadRealTimeMonitoringData.getOutput_current()!=null&&
 							uploadRealTimeMonitoringData.getOutput_voltage()!=null){
 						uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage()
-								.multiply(uploadRealTimeMonitoringData.getOutput_current()));
+								.multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_UP));
 					}
 				}
 				if (!data6.isEmpty()){
 					// 第一条数据soc为开始 最后一条数据soc为结束soc
-					chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString());
-					chargingOrderListInfoVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString());
+					chargingOrderListInfoVO.setStartSoc(data6.get(data6.size()-1).getSoc().toString());
+					chargingOrderListInfoVO.setEndSoc(data6.get(0).getSoc().toString());
 					chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree());
-					chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+"");
+
 					SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 					for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) {
 						uploadRealTimeMonitoringData.setCreateTime(simpleDateFormat.format(uploadRealTimeMonitoringData.getCreate_time()));
 					}
 				}
 			}
+
 			chargingOrderListInfoVO.setList(data6);
 		}
+		// 获取充电时间
+		UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+		if (data5!=null){
+			if (data5.getTime_remaining()!=null){
+				chargingOrderListInfoVO.setChargingSecond(data5.getCumulative_charging_time()*60L+"");
 
+			}
+		}
 
 		if (chargingOrder.getAppUserCarId()!=null){
 			List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData();
@@ -1735,6 +1761,10 @@
 			chargingOrder.setChargingCapacity(query.getCharging_degree());
 			chargingOrder.setElectricity(query.getCharging_degree());
 			chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
+			BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder.getCode()).getData();
+			if(null != data){
+				chargingOrder.setNeedElec(data.getBms_current_requirements());
+			}
 			this.updateById(chargingOrder);
 		}
 	}
@@ -1774,7 +1804,7 @@
 	public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
 		Integer status = chargingOrder.getStatus();
-		if(status == 4 || status == 5){
+		if(status == 5){
 			return;
 		}
 		
@@ -1787,7 +1817,7 @@
 		
 		//获取订单的计费策略
 		List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
-		
+		accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59");
 		//开始处理计费明细数据和优惠数据
 		chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
 		SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -1900,16 +1930,16 @@
 				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
 			}
 			chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
-			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
-			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
-			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
-			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
+			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN));
 			chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
 			chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 			
-			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
-			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
-			total = total.add(electrovalenc.add(originalServicePrice));
+			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN));
+			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN));
+			total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN)));
 		}
 		
 		
@@ -1959,13 +1989,13 @@
 		if(null == chargingOrder.getEndMode()){
 			order.setEndMode(1);
 		}
-		order.setResidualAmount(rechargeAmount.subtract(total));
+		order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
 		order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		order.setStatus(5);
-		order.setOrderAmount(orderAmount);
-		order.setVipDiscountAmount(discountAmount);
-		order.setElectrovalence(periodElectricPrice_total);
+		order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
+		order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
+		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
 		order.setChargingCapacity(vo.getTotal_electricity());
 		order.setElectricity(vo.getTotal_electricity());
 		
@@ -2030,9 +2060,9 @@
 			}
 		}
 		
-		order.setServiceCharge(periodServicePrice_total);
-		order.setPaymentAmount(payAmount);
-		order.setRefundAmount(refundAmount);
+		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
+		order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
+		order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
 		order.setRefundStatus(1);
 		this.updateById(order);
 		chargingOrder = this.getById(order.getId());
@@ -2046,8 +2076,8 @@
 				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
 				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
 				periodServicePrice = periodServicePrice.subtract(multiply);
-				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
-				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
+				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.DOWN));
+				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.DOWN));
 			}
 			chargingOrderAccountingStrategyService.updateBatchById(list);
 		}
@@ -2064,7 +2094,7 @@
 		if(null != integralRule){
 			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
 			Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
-			Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue();
+			Integer integral = chargingOrder.getServiceCharge().intValue() * num1;
 			if(null != appUser.getVipId()){
 				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 				Integer doubleIntegration = vip.getDoubleIntegration();
@@ -2243,6 +2273,9 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
+				if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
+					tChargingOrder.setStatus(5);
+				}
 
 
 				TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
@@ -2309,6 +2342,10 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
+				if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
+					tChargingOrder.setStatus(5);
+				}
+
 				TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
 				chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
 				chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2359,9 +2396,7 @@
 						tChargingOrder.setRefundStatus(2);
 						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 
-						if (payOrderQueryDto.getRefundAmount().compareTo(tChargingOrder.getPaymentAmount())==0){
-							tChargingOrder.setStatus(5);
-						}
+
 						shoppingOrderService.updateById(tChargingOrder);
 
 						shoppingOrderRefundService.save(chargingOrderRefund);
@@ -2376,6 +2411,8 @@
 			if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 				return R.fail("退款金额需小于支付金额");
 			}
+
+
 			TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
 			chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
 			chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2545,15 +2582,13 @@
 			if (tChargingOrder.getCouponDiscountAmount()!=null){
 				couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount());
 			}
-			if (tChargingOrder.getRefundStatus()!=null &&tChargingOrder.getRefundStatus() == 2){
-				// 如果成功退款 那么减去退款金额
+			if (tChargingOrder.getPaymentAmount()!=null){
 				paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
-			}else{
-				if (tChargingOrder.getPaymentAmount()!=null){
-					paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
-				}
 			}
+
 		}
+		tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean())
+				.subtract(dto.getMaintain()).multiply(dto.getServicePartner()));
 		// 三方交易手续费 三方收费*0.6%
 		commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
 		// 订单手续费 订单支付金额 - 退款金额*0.6%
@@ -2561,7 +2596,7 @@
 		tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN));
-		tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN));
+		tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setOrderCommission(orderCommission);
 		tSettlementConfirm.setVipDiscount(vipDiscount);
 		tSettlementConfirm.setCouponDiscount(couponDiscount);
@@ -2587,8 +2622,7 @@
 			tSettlementConfirm.setTotalService(dto.getTotalService());
 			tSettlementConfirm.setRemark(dto.getRemark());
 			tSettlementConfirm.setServicePartner(dto.getServicePartner());
-			tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
-			BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner());
+			BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner().multiply(new BigDecimal("0.01")));
 			// 总电损费用
 			BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN);
 			// 平台承担电损
@@ -2601,9 +2635,12 @@
 			tSettlementConfirm.setServiceRemark(dto.getServiceRemark());
 			tSettlementConfirm.setDistribution(dto.getDistribution());
 			tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge()));
-			tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getMetering()));
-			tSettlementConfirm.setProfitMoney(chargingElectronic.add(serviceCharge).subtract(tSettlementConfirm.getCost()));
+			tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getSupplyElectronic()));
+			BigDecimal divide1 = tSettlementConfirm.getProportionMoney().divide(tSettlementConfirm.getProportionPartner(), 2, RoundingMode.HALF_DOWN);
+			tSettlementConfirm.setProfitMoney(tSettlementConfirm.getServiceMoney().multiply(tSettlementConfirm.getServicePartner())
+					.subtract(divide1));
 			tSettlementConfirm.setNewSettlement(subtract2.subtract(tSettlementConfirm.getCost()));
+
 
 			tSettlementConfirmMapper.insert(tSettlementConfirm);
 		}
@@ -2612,18 +2649,22 @@
 
 	@Override
 	public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
+		String startTime = null;
+		String endTime = null;
 		if (StringUtils.hasLength(dto.getStartTime())){
 			dto.setType(1);
 			String[] split = dto.getStartTime().split(" - ");
-			dto.setStartTime(split[0]);
-			dto.setEndTime(split[1]);
+			startTime = split[0];
+			endTime = split[1];
 		}
 		if (StringUtils.hasLength(dto.getEndTime())){
 			dto.setType(2);
-			String[] split = dto.getStartTime().split(" - ");
-			dto.setStartTime(split[0]);
-			dto.setEndTime(split[1]);
+			String[] split = dto.getEndTime().split(" - ");
+			startTime = split[0];
+			endTime = split[1];
 		}
+		dto.setStartTime(startTime);
+		dto.setEndTime(endTime);
 		PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
 		List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
 		for (TSettlementConfirm tSettlementConfirm : list) {
@@ -2750,10 +2791,17 @@
 			}
 			// 充电总时长
 
-			Long temp = 0L;
+			Long temp = 1L;
 			if (StringUtils.hasLength(stringBuilder.toString())){
-				List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(stringBuilder.substring(0,stringBuilder.length()-1)).getData();
-				temp+=(data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum()*60);
+				String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
+				for (String s : substring.split(",")) {
+					UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
+					if (data6!=null){
+						temp+=(data6.getCumulative_charging_time()*60);
+
+					}
+
+				}
 			}
 			List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
 			// 计算充电桩的功率平均值
@@ -2793,7 +2841,7 @@
 				if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
 					// 电站相同比较收入涨幅跌幅
 					if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
-						BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+						BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
 						tSettlementConfirm.setIncomePercentage(subtract+"%");
 					}else {
 						tSettlementConfirm.setIncomePercentage("100"+"%");
@@ -2868,8 +2916,8 @@
 	}
 
 	@Override
-	public List<Map<String, Object>> countBySource(List<Integer> siteIds) {
-		return this.baseMapper.countBySource(siteIds);
+	public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.countBySource(siteIds,statisticsQueryDto);
 	}
 
 	@Override
@@ -2988,15 +3036,17 @@
 		if(null != order.getAppUserId()){
 			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
 		}
-		if(null != order.getAppUserId()){
-			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
-		}
 		if(null != order.getStatusList()){
-			queryWrapper.in(TChargingOrder::getAppUserId, order.getStatusList());
+			queryWrapper.in(TChargingOrder::getStatus, order.getStatusList());
 		}
 		if(null != order.getEndMode()){
 			queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode());
 		}
 		return this.list(queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
 	}
+
+	@Override
+	public Long countCar(List<String> brands) {
+		return this.baseMapper.countCar(brands);
+	}
 }

--
Gitblit v1.7.1