From 6a5c99ce357788e70ce1973e76649e06fb6e8ff2 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 26 十月 2024 17:23:24 +0800
Subject: [PATCH] bug修改

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |  229 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 187 insertions(+), 42 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 14b5a07..a5b335c 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
@@ -539,6 +539,7 @@
 		chargingOrder.setRechargePaymentStatus(2);
 		chargingOrder.setRechargeSerialNumber(transaction_id);
 		chargingOrder.setStatus(2);
+		chargingOrder.setPayTime(LocalDateTime.now());
 
 		//添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
 		PreChargeCheck preChargeCheck = new PreChargeCheck();
@@ -608,12 +609,16 @@
 						if(times > m){
 							//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
 							serviceCharge = s_server_amount.multiply(new BigDecimal(m));
-							discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
 							rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
+							if(null != discount){
+								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							}
 							nowTimeMillis = null;
 						}else{
 							serviceCharge = s_server_amount.multiply(new BigDecimal(times));
-							discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							if(null != discount){
+								discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
+							}
 							break;
 						}
 					}
@@ -708,6 +713,9 @@
 			preChargeCheck1.setStartupSuccess(2);
 			order.setStatus(3);
 			order.setStartTime(LocalDateTime.now());
+			TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
+			chargingGun.setStatus(4);
+			chargingGunClient.updateChargingGunById(chargingGun);
 		}
 		redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 		this.updateById(order);
@@ -789,6 +797,12 @@
 		one.setRefundStatus(2);
 		one.setRefundTime(LocalDateTime.now());
 		chargingOrderRefundService.updateById(one);
+		
+		TChargingOrder chargingOrder = this.getById(one.getChargingOrderId());
+		chargingOrder.setRefundStatus(2);
+		chargingOrder.setRefundSerialNumber(refund_id);
+		chargingOrder.setRefundTime(LocalDateTime.now());
+		this.updateById(chargingOrder);
 		return AjaxResult.success();
 	}
 
@@ -830,6 +844,7 @@
 			Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60);
 			chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m));
 		}
+		//转换成UTC时间
 		ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData();
 		if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){
 			BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity();
@@ -1158,6 +1173,16 @@
 	public R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto) {
 		PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(),payOrderQueryDto.getPageSize());
 		List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo,payOrderQueryDto);
+		for (PayOrderDto payOrderDto : list) {
+			if (payOrderDto.getType()==2||payOrderDto.getType()==3){
+				payOrderDto.setFinalAmount(payOrderDto.getOrderAmount());
+			}
+			if (payOrderDto.getType()==1&&payOrderDto.getStatus()==3){
+				payOrderDto.setFinalAmount(payOrderDto.getRechargeAmount());
+				payOrderDto.setOrderAmount(payOrderDto.getRechargeAmount());
+				payOrderDto.setPaymentAmount(payOrderDto.getRechargeAmount());
+			}
+		}
 		pageInfo.setRecords(list);
 		return R.ok(pageInfo);
 	}
@@ -1265,12 +1290,12 @@
 		List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
 		for (ChargingOrderListVO chargingOrderListVO : list) {
 			chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
-			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getOrderAmount());
+			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
 			BigDecimal bigDecimal = new BigDecimal("0.006");
-			if (chargingOrderListVO.getServiceCharge()!=null){
-				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getServiceCharge().multiply(bigDecimal));
+			if (chargingOrderListVO.getOrderAmount()!=null){
+				chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getOrderAmount().multiply(bigDecimal));
 			}
-			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount()));
+			chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount());
 			chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
 			List<Integer> integers = new ArrayList<>();
 			integers.add(chargingOrderListVO.getSiteId());
@@ -1311,7 +1336,9 @@
 						carId.add(chargingOrderListVO.getAppUserCarId());
 						if (!carId.isEmpty()){
 							List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
-							if (data4!=null && !data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
+							if (data4!=null && !data4.isEmpty()) {
+								chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
+							}
 						}
 					}
 					chargingOrderListVO.setPhone(data3.getPhone());
@@ -1392,7 +1419,7 @@
 		for (ChargingOrderListVO chargingOrderListVO : list1) {
 			if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
 
-			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getOrderAmount());
+			if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
 			if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
 			if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
 			List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -1482,8 +1509,8 @@
 
 		chargingOrderListInfoVO.setStatus(chargingOrder.getStatus());
 		BigDecimal bigDecimal = new BigDecimal("0.006");
-		if (chargingOrder.getServiceCharge()!=null){
-			chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getServiceCharge().multiply(bigDecimal));
+		if (chargingOrder.getOrderAmount()!=null){
+			chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getOrderAmount().multiply(bigDecimal));
 		}
 		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
 		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
@@ -1651,6 +1678,8 @@
 		
 		//获取订单的计费策略
 		List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+		
+		//开始处理计费明细数据和优惠数据
 		chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
 		for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
 			Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
@@ -1693,22 +1722,23 @@
 				BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
 				BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
 				BigDecimal serviceCharge = originalServicePrice;
+				BigDecimal vipDiscountAmount = BigDecimal.ZERO;
 				//计算优惠金额
 				if(null != chargingOrder.getVipDiscount()){
+					vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
 					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.setCreateTime(LocalDateTime.now());
 				chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 				
-				BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
-				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
-				periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
-				periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
-				total = total.add(periodElectricPrice.add(periodServicePrice));
+				periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+				periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+				total = total.add(electrovalenc.add(originalServicePrice));
 			} catch (IllegalAccessException e) {
 				throw new RuntimeException(e);
 			} catch (InvocationTargetException e) {
@@ -1731,21 +1761,19 @@
 		//折扣金额
 		BigDecimal discountAmount = BigDecimal.ZERO;
 		if(null != chargingOrder.getVipDiscount()){
-			//服务费折扣
-			discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
-			periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
-
 			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-			if(null != appUser.getVipId()){
-				//判断会员是否还有充电优惠次数
-				GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
-				getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
-				getAppUserVipDetail.setVipId(appUser.getVipId());
-				TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
-				if(null != data && data.getChargeNum() > 0){
-					data.setChargeNum(data.getChargeNum() - 1);
-					appUserVipDetailClient.updateAppUserVipDetail(data);
-				}
+			//判断会员是否还有充电优惠次数
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+			if(null != data && data.getChargeNum() > 0){
+				data.setChargeNum(data.getChargeNum() - 1);
+				appUserVipDetailClient.updateAppUserVipDetail(data);
+				
+				//服务费折扣
+				discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
+				periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
 				
 				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 				BigDecimal maximumDeduction = vip.getMaximumDeduction();
@@ -1754,8 +1782,8 @@
 					discountAmount = maximumDeduction;
 				}
 			}
-			payAmount = payAmount.subtract(discountAmount);
 		}
+		payAmount = payAmount.subtract(discountAmount);
 		
 		TChargingOrder order = new TChargingOrder();
 		order.setId(chargingOrder.getId());
@@ -1772,7 +1800,6 @@
 		order.setStatus(5);
 		order.setOrderAmount(orderAmount);
 		order.setVipDiscountAmount(discountAmount);
-		order.setServiceCharge(periodServicePrice_total);
 		order.setElectrovalence(periodElectricPrice_total);
 		order.setChargingCapacity(vo.getTotal_electricity());
 		order.setElectricity(vo.getTotal_electricity());
@@ -1793,10 +1820,12 @@
 						refundAmount = refundAmount.add(periodServicePrice_total);
 						order.setCouponDiscountAmount(periodServicePrice_total);
 						payAmount = payAmount.subtract(periodServicePrice_total);
+						periodServicePrice_total = BigDecimal.ZERO;
 					}else{
 						refundAmount = refundAmount.add(couponDiscountAmount);
 						order.setCouponDiscountAmount(couponDiscountAmount);
 						payAmount = payAmount.subtract(couponDiscountAmount);
+						periodServicePrice_total = periodServicePrice_total.subtract(couponDiscountAmount);
 					}
 					
 					appCoupon.setStatus(2);
@@ -1818,10 +1847,12 @@
 						refundAmount = refundAmount.add(periodServicePrice_total);
 						order.setCouponDiscountAmount(periodServicePrice_total);
 						payAmount = payAmount.subtract(periodServicePrice_total);
+						periodServicePrice_total = BigDecimal.ZERO;
 					}else{
 						refundAmount = refundAmount.add(divide);
 						order.setCouponDiscountAmount(divide);
 						payAmount = payAmount.subtract(divide);
+						periodServicePrice_total = periodServicePrice_total.subtract(divide);
 					}
 					
 					appCoupon.setStatus(2);
@@ -1833,11 +1864,27 @@
 				}
 			}
 		}
+		
+		order.setServiceCharge(periodServicePrice_total);
 		order.setPaymentAmount(payAmount);
 		order.setRefundAmount(refundAmount);
 		order.setRefundStatus(1);
 		this.updateById(order);
 		chargingOrder = this.getById(order.getId());
+		
+		//开始将优惠券优惠的金额添加到明细中
+		BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
+		if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){
+			List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
+			for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
+				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
+				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(periodServicePrice_total, new MathContext(4, RoundingMode.HALF_EVEN)));
+				periodServicePrice = periodServicePrice.subtract(multiply);
+				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
+				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
+			}
+			chargingOrderAccountingStrategyService.updateBatchById(list);
+		}
 		
 		// 将枪状态重置为空闲
 		TChargingGun chargingGun = new TChargingGun();
@@ -1895,7 +1942,7 @@
 			chargingOrderRefund.setRefundTitle("充电完成退款");
 			chargingOrderRefund.setRefundContent("充电完成退款");
 			chargingOrderRefund.setRefundReason("充电完成退款");
-			chargingOrderRefund.setRefundRemark("充电完成退款");
+			chargingOrderRefund.setRefundRemark("实际充电消费金额:" + refundAmount);
 			chargingOrderRefund.setRefundTotalAmount(refundAmount);
 			chargingOrderRefund.setPayAmount(rechargeAmount);
 			if(1 == rechargePaymentType){
@@ -1969,7 +2016,7 @@
 	}
 	@Override
 	public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) {
-		return this.baseMapper.usersByQuery(statisticsQueryDto);
+		return this.baseMapper.usersByQuery1(statisticsQueryDto);
 	}
 
 	@Override
@@ -2003,7 +2050,7 @@
 	}
 
 	@Override
-	public Long getAver(List<Integer> siteIds) {
+	public Double getAver(List<Integer> siteIds) {
 		return this.baseMapper.getAver(siteIds);
 	}
 
@@ -2017,10 +2064,19 @@
 	private TShoppingOrderService shoppingOrderService;
 	@Resource
 	private TShoppingOrderRefundService shoppingOrderRefundService;
+	@Resource
+	private TVipOrderService vipOrderService;
+	@Resource
+	private TVipOrderRefundService vipOrderRefundService;
 	@Override
 	public R payRefund(PayOrderRefundDto payOrderQueryDto) {
 			if (payOrderQueryDto.getType()==1){
 				TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId());
+				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
+					return R.fail("退款金额需小于支付金额");
+				}
+
+
 				TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
 				chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
 				chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2033,7 +2089,7 @@
 				chargingOrderRefund.setRefundTitle("后台退款");
 				chargingOrderRefund.setRefundContent("后台退款");
 				chargingOrderRefund.setRefundReason("后台退款");
-				chargingOrderRefund.setRefundRemark("后台退款");
+				chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
 				chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
 				chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
 
@@ -2046,7 +2102,7 @@
 					model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
 					WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
 					amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
-					amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+					amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
 					amount.setCurrency("CNY");
 					model.setAmount(amount);
 					R<String> orderR = wxPaymentClient.refundOrderR(model);
@@ -2082,6 +2138,9 @@
 			}
 			if (payOrderQueryDto.getType()==2){
 				TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId());
+				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
+					return R.fail("退款金额需小于支付金额");
+				}
 				TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
 				chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
 				chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2094,7 +2153,7 @@
 				chargingOrderRefund.setRefundTitle("后台退款");
 				chargingOrderRefund.setRefundContent("后台退款");
 				chargingOrderRefund.setRefundReason("后台退款");
-				chargingOrderRefund.setRefundRemark("后台退款");
+				chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
 				chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
 				chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
 
@@ -2131,6 +2190,10 @@
 
 						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);
@@ -2139,6 +2202,71 @@
 				}
 
 			}
+
+		if (payOrderQueryDto.getType()==3){
+			TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
+			if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
+				return R.fail("退款金额需小于支付金额");
+			}
+			TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
+			chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
+			chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setPayType(tChargingOrder.getPaymentType());
+			chargingOrderRefund.setRefundTime(LocalDateTime.now());
+			chargingOrderRefund.setCode(tChargingOrder.getCode());
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+			chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+			chargingOrderRefund.setRefundTitle("后台退款");
+			chargingOrderRefund.setRefundContent("后台退款");
+			chargingOrderRefund.setRefundReason("后台退款");
+			chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
+			chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
+			chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
+
+			if(1 == tChargingOrder.getPaymentType()){
+				WxPaymentRefundModel model = new WxPaymentRefundModel();
+				model.setOut_trade_no(tChargingOrder.getCode());
+				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+				model.setTransaction_id(tChargingOrder.getSerialNumber());
+				model.setReason("取消订单");
+				model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
+				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+				amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
+				amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+				amount.setCurrency("CNY");
+				model.setAmount(amount);
+				R<String> orderR = wxPaymentClient.refundOrderR(model);
+				if(200 == orderR.getCode()){
+					tChargingOrder.setRefundStatus(2);
+					tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+					vipOrderService.updateById(tChargingOrder);
+					vipOrderRefundService.save(chargingOrderRefund);
+				}
+			}
+
+			if(2 == tChargingOrder.getPaymentType()){
+				RefundReq dto = new RefundReq();
+				dto.setOutTradeNo(tChargingOrder.getCode());
+				dto.setOutRequestNo(tChargingOrder.getCode());
+				dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+				dto.setRefundReason("取消订单");
+				RefundResp resp = aliPaymentClient.refund(dto).getData();
+				if(null != resp){
+					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+
+					tChargingOrder.setRefundStatus(2);
+					tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
+
+
+					vipOrderService.updateById(tChargingOrder);
+
+					vipOrderRefundService.save(chargingOrderRefund);
+
+				}
+			}
+
+		}
 
 
 
@@ -2250,10 +2378,10 @@
 			}
 			if (tChargingOrder.getRefundStatus()!=null &&tChargingOrder.getRefundStatus() == 2){
 				// 如果成功退款 那么减去退款金额
-				paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()));
+				paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
 			}else{
 				if (tChargingOrder.getPaymentAmount()!=null){
-					paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+					paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount());
 				}
 			}
 		}
@@ -2261,8 +2389,8 @@
 		commissionAmount = sharingAmount.multiply(new BigDecimal("0.006"));
 		// 订单手续费 订单支付金额 - 退款金额*0.6%
 		orderCommission = paymentAmount.multiply(new BigDecimal("0.006"));
-		tSettlementConfirm.setSharingAmount(sharingAmount);
-		tSettlementConfirm.setCommissionAmount(commissionAmount);
+		tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN));
+		tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN));
 		tSettlementConfirm.setElectrovalence(electrovalence);
 		// 服务费=总服务费-三费收费-交易手续费-交易手续费-服务费会员抵扣-服务费优惠券抵扣
 		tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).subtract(sharingAmount).subtract(orderCommission).subtract(vipDiscount).subtract(couponDiscount));
@@ -2307,6 +2435,18 @@
 
 	@Override
 	public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) {
+		if (StringUtils.hasLength(dto.getStartTime())){
+			dto.setType(1);
+			String[] split = dto.getStartTime().split(" - ");
+			dto.setStartTime(split[0]);
+			dto.setEndTime(split[1]);
+		}
+		if (StringUtils.hasLength(dto.getEndTime())){
+			dto.setType(2);
+			String[] split = dto.getStartTime().split(" - ");
+			dto.setStartTime(split[0]);
+			dto.setEndTime(split[1]);
+		}
 		PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
 		List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
 		for (TSettlementConfirm tSettlementConfirm : list) {
@@ -2504,7 +2644,7 @@
 			tSettlementConfirm.setIncomePercentage(0+"%");
 			tSettlementConfirm.setIncomePercentage(0+"%");
 		}else{
-			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+			BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
 			tSettlementConfirm.setIncomePercentage(subtract+"%");
 
@@ -2624,4 +2764,9 @@
 		info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second));
 		return info;
 	}
+
+	@Override
+	public Long countNoTag() {
+		return this.baseMapper.countNoTag();
+	}
 }

--
Gitblit v1.7.1