From 2c042dcf548b3c7fdf3541833470162c55773551 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 19 三月 2025 17:11:43 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 89 +++++++++++++++++++++++++-------------------
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 4 +-
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 4 +-
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 4 +-
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 6 +++
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 4 +-
7 files changed, 66 insertions(+), 47 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index cad5ef5..325b337 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1292,10 +1292,10 @@
// List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
// chargingOrderIds.add(-1L);
//上方饼图
- List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end);
+ List<Map<String,Object>> maps = chargingOrderService.getSumByType(start,end, siteIds);
if (statisticsQueryDto.getDayType()==1){
- List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end);
+ List<Map<String,Object>> maps1 = chargingOrderService.getDateData(start,end, siteIds);
List<Map<String, Object>> charMap = new ArrayList<>();
// 生成从 "00:00" 到 "23:00" 的时间数据
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index 27539ce..7f5ff3e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -68,9 +68,9 @@
Map<String, Object> countAll(@Param("sixBefore")LocalDate sixBefore,@Param("siteIds")List<Integer> siteIds);
- List<Map<String, Object>> getSumByType(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
+ List<Map<String, Object>> getSumByType(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
- List<Map<String, Object>> getDateData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
+ List<Map<String, Object>> getDateData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds);
List<Map<String, Object>> getWeekData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index f411893..64b1198 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -146,9 +146,9 @@
Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds);
- List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end);
+ List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds);
- List<Map<String, Object>> getDateData(LocalDate start,LocalDate end);
+ List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds);
List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end);
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 22308d1..e332428 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
@@ -1351,7 +1351,6 @@
chargingOrderVO.setAuthRecord(t1.get(0));
}
}
- chargingOrderVO.setSharingAmount(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
chargingOrderVO.setUid(chargingOrderVO.getId()+"");
@@ -1374,7 +1373,17 @@
// 计算时间差 单位秒
long between = ChronoUnit.SECONDS.between(startTime, endTime);
chargingOrderVO.setChargingSecond(between);
-
+
+ BigDecimal electronic_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ chargingOrderVO.setElectrovalence(electronic_reduce);
+ BigDecimal service_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ if (!chargingOrderVO.getOrderSource().equals(2)){
+ chargingOrderVO.setServiceCharge(service_reduce);
+ chargingOrderVO.setSharingAmount(BigDecimal.ZERO);
+ }else{
+ chargingOrderVO.setServiceCharge(service_reduce.multiply(new BigDecimal("0.8")));
+ chargingOrderVO.setSharingAmount(service_reduce.multiply(new BigDecimal("0.2")));
+ }
}
// 充电时段数
int size = chargingOrderId.size();
@@ -1403,15 +1412,17 @@
.eq(TChargingOrderRefund::getRefundStatus,2).list();
for (ChargingOrderVO chargingOrderVO : list1) {
+ List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList());
+ BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
if (!chargingOrderVO.getOrderSource().equals(2)) {
paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0"));
}else{
- paymentMoney = paymentMoney.add(chargingOrderVO.getServiceCharge() != null ? chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0"));
-
+ paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN));
}
- if (chargingOrderVO.getRechargeAmount()!=null){
- commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
- }
+// if (chargingOrderVO.getRechargeAmount()!=null){
+// commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
+// }
if (chargingOrderVO.getChargingCapacity()!=null){
total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
}
@@ -1425,18 +1436,19 @@
List<TChargingOrderRefund> list2 = chargingOrderRefunds.stream().filter(e -> e.getChargingOrderId() != null && e.getChargingOrderId().equals(chargingOrderVO.getId()))
.collect(Collectors.toList());
for (TChargingOrderRefund tChargingOrderRefund : list2) {
- refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
+ refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
}
- electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
+
+ //充电明细
+ electronicMoney = electronicMoney.add(electronic_reduce);
if (!chargingOrderVO.getOrderSource().equals(2)){
- serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+ serviceMoney = serviceMoney.add(service_reduce);
}else{
- serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
+ serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8")));
}
}
tCharingOrderVO.setTotal(total);
tCharingOrderVO.setTime(time);
-// tCharingOrderVO.setIncome(paymentMoney.subtract(commissionMoney));
tCharingOrderVO.setIncome(paymentMoney);
tCharingOrderVO.setElectronicMoney(electronicMoney);
tCharingOrderVO.setServiceMoney(serviceMoney);
@@ -1494,17 +1506,17 @@
}
@Override
- public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end) {
+ public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getSumByType(start1,end1);
+ return this.baseMapper.getSumByType(start1,end1, siteIds);
}
@Override
- public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end) {
+ public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds) {
LocalDateTime start1 = start.atStartOfDay();
LocalDateTime end1 = end.atTime(LocalTime.MAX);
- return this.baseMapper.getDateData(start1,end1);
+ return this.baseMapper.getDateData(start1,end1, siteIds);
}
@Override
@@ -2117,10 +2129,11 @@
}
//如果使用优惠券需要判断优惠券是否满足使用条件
- //根据实际的充电金额计算退款金额 退回费用=(原金额/总金额)*(总金额-实际充电金额)
//退款金额=优惠券金额+剩余充电金额
BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
BigDecimal periodServicePrice_total = BigDecimal.ZERO;
+ BigDecimal vipDiscountAmount_total = BigDecimal.ZERO;
+ BigDecimal serviceCharge_total = BigDecimal.ZERO;
BigDecimal total = BigDecimal.ZERO;
//获取订单的计费策略
@@ -2298,26 +2311,25 @@
chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN));
chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
-
+ //电费
periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+ //服务费(含折扣)
+ serviceCharge_total = serviceCharge_total.add(serviceCharge);
+ //服务费(不含折扣)
periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+ //会员折扣优惠金额
+ vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount);
+ //原始总金额(不含折扣)
total = total.add(electrovalenc.add(originalServicePrice));
}
BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
- //折扣金额
- BigDecimal discountAmount = chargingOrder.getVipDiscountAmount();
//原金额
BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
- //总金额(充值金额+会员折扣金额)
- BigDecimal decimal = rechargeAmount.add(discountAmount);
- //退款金额(已经计算了折扣优惠部分)
- //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
- BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
//支付金额
- BigDecimal payAmount = rechargeAmount.subtract(refundAmount);
- //实际充值服务费-会员折扣
- periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
+ BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total);
+ //退款金额=充值金额-实际支付金额
+ BigDecimal refundAmount = rechargeAmount.subtract(payAmount);
TChargingOrder order = new TChargingOrder();
order.setId(chargingOrder.getId());
@@ -2341,7 +2353,8 @@
order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
order.setChargingCapacity(vo.getTotal_electricity());
order.setElectricity(vo.getTotal_electricity());
- if(discountAmount.compareTo(BigDecimal.ZERO) == 0){
+ order.setVipDiscountAmount(vipDiscountAmount_total);
+ if(vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0){
order.setVipDiscount(BigDecimal.valueOf(1));
}
@@ -2358,9 +2371,9 @@
if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount();
//如果优惠金额大于服务费金额,以服务费作为最大限制
- if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){
- couponDiscount = periodServicePrice_total;
- periodServicePrice_total = BigDecimal.ZERO;
+ if(serviceCharge_total.compareTo(couponDiscountAmount) < 0){
+ couponDiscount = serviceCharge_total;
+ serviceCharge_total = BigDecimal.ZERO;
}else{
couponDiscount = couponDiscountAmount;
}
@@ -2379,9 +2392,9 @@
BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
//如果优惠金额大于服务费金额,以服务费作为最大限制
- if(periodServicePrice_total.compareTo(divide) < 0){
- couponDiscount = periodServicePrice_total;
- periodServicePrice_total = BigDecimal.ZERO;
+ if(serviceCharge_total.compareTo(divide) < 0){
+ couponDiscount = serviceCharge_total;
+ serviceCharge_total = BigDecimal.ZERO;
}else{
couponDiscount = divide;
}
@@ -2401,11 +2414,11 @@
refundAmount = refundAmount.add(couponDiscount);
//实际支付金额-优惠券
payAmount = payAmount.subtract(couponDiscount);
- if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
- periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
+ if(serviceCharge_total.compareTo(BigDecimal.ZERO) > 0){
+ serviceCharge_total = serviceCharge_total.subtract(couponDiscount);
}
order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN));
- order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.HALF_EVEN));
+ order.setServiceCharge(serviceCharge_total.setScale(2, RoundingMode.HALF_EVEN));
order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
order.setRefundStatus(1);
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index dfe3903..c92c846 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -435,6 +435,12 @@
t_charging_order_accounting_strategy t1
LEFT JOIN t_charging_order t2 on t1.charging_order_id = t2.id
where t2.create_time between #{start} and #{end}
+ <if test="null != siteIds and siteIds.size() > 0">
+ and t2.site_id in
+ <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
+ #{item}
+ </foreach>
+ </if>
GROUP BY
t1.type
</select>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
index 6948412..e231b05 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
@@ -78,7 +78,7 @@
</select>
<select id="getSumAmout" resultType="java.math.BigDecimal">
SELECT
- SUM(payment_amount-refund_amount) AS paymentAmount
+ SUM(payment_amount-ifnull(refund_amount,0)) AS paymentAmount
FROM
t_vip_order
WHERE
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
index e6d49d2..bcd53a4 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -354,10 +354,10 @@
if(byId.getReveal() == 0){
return R.ok("无效的会员");
}
- if(1 == buyType && byId.getMonthlyCardDiscountReveal() == 0){
+ if(1 == buyType && byId.getMonthlyCardReveal() == 0){
return R.ok("无效的会员");
}
- if(2 == buyType && byId.getSeasonCardDiscountReveal() == 0){
+ if(2 == buyType && byId.getSeasonCardReveal() == 0){
return R.ok("无效的会员");
}
if(3 == buyType && byId.getAnnualCardReveal() == 0){
--
Gitblit v1.7.1