From 9ea18e97ce0a2318619a608a5a4585e7378553ea Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 06 三月 2025 15:28:41 +0800
Subject: [PATCH] 修改bug和漏洞修复
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 278 ++++++++++++++++++++++++++++++++++--------------------
1 files changed, 174 insertions(+), 104 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 ba79837..9910897 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
@@ -648,21 +648,19 @@
long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue();
if(times > m){
//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
- serviceCharge = s_server_amount.multiply(new BigDecimal(m));
+ serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(m)));
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));
- if(null != discount){
- discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
- }
+ serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(times)));
break;
}
}
}
+ if(null != discount){
+ discountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(discount));
+ }
+
if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
//计算会员最大优惠金额
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
@@ -673,9 +671,12 @@
}
}
discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
+ if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
+ data.setChargeNum(data.getChargeNum() - 1);
+ appUserVipDetailClient.updateAppUserVipDetail(data);
+ }
}
}
-
//机子上显示的金额为用户充值的金额+会员折扣金额
BigDecimal account_balance = chargingOrder.getRechargeAmount().add(discountAmount).setScale(4, RoundingMode.HALF_EVEN);
@@ -920,9 +921,22 @@
chargingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- BigDecimal refund_fee = new BigDecimal(amount1.get("refund_fee").toString()).divide(new BigDecimal(100));
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
chargingOrderRefund.setRefundFee(refund_fee);
chargingOrderRefundService.updateById(chargingOrderRefund);
+ //回退会员折扣次数
+ if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+ GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+ getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+ getAppUserVipDetail.setVipId(appUser.getVipId());
+ TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+ if(null != data){
+ data.setChargeNum(data.getChargeNum() + 1);
+ appUserVipDetailClient.updateAppUserVipDetail(data);
+ }
+ }
}
}
if(2 == rechargePaymentType){
@@ -934,6 +948,19 @@
RefundResp resp = aliPaymentClient.refund(dto).getData();
if(null != resp){
chargingOrderRefundService.save(chargingOrderRefund);
+ //回退会员折扣次数
+ if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
+ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+ GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+ getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+ getAppUserVipDetail.setVipId(appUser.getVipId());
+ TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+ if(null != data){
+ data.setChargeNum(data.getChargeNum() + 1);
+ appUserVipDetailClient.updateAppUserVipDetail(data);
+ }
+ }
+
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
@@ -1243,7 +1270,6 @@
List<TChargingPile> allPile = chargingGunClient.getAllPile().getData();
List<Site> data9 = siteClient.getSiteAll().getData();
List<TAppUser> data6 = appUserClient.getAllUser().getData();
- List<Partner> data7 = siteClient.getAllPartner().getData();
List<TAppUserCar> data4 = appUserCarClient.getAllCar().getData();
String startTime1 = null;
String startTime2 = null;
@@ -1310,14 +1336,12 @@
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");
BigDecimal commissionMoney = new BigDecimal("0");
BigDecimal refundMoney = new BigDecimal("0");
BigDecimal paymentMoney = new BigDecimal("0");
- List<String> collect2 = list.stream().map(TChargingOrder::getCode).collect(Collectors.toList());
- List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>());
+ List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
for (ChargingOrderVO chargingOrderVO : list) {
if (roleType == 2){
@@ -1326,8 +1350,8 @@
List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData();
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()+"");
@@ -1375,14 +1399,16 @@
}
- List<Long> orderIds = list1.stream().map(TChargingOrder::getId).collect(Collectors.toList());
- if(orderIds.isEmpty())orderIds.add(-1L);
List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery()
- .in(TChargingOrderRefund::getChargingOrderId, orderIds)
.eq(TChargingOrderRefund::getRefundStatus,2).list();
for (ChargingOrderVO chargingOrderVO : list1) {
- paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
+ 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"));
+
+ }
if (chargingOrderVO.getRechargeAmount()!=null){
commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN));
}
@@ -1402,7 +1428,11 @@
refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount());
}
electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0"));
- serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+ if (!chargingOrderVO.getOrderSource().equals(2)){
+ serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0"));
+ }else{
+ serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
+ }
}
tCharingOrderVO.setTotal(total);
tCharingOrderVO.setTime(time);
@@ -1490,6 +1520,8 @@
@Resource
private SysUserClient sysUserClient;
+
+
@Override
public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
String startTime1 = null;
@@ -1688,7 +1720,13 @@
"0"+"%(平)/"+
"0"+"%(谷)");
}
-
+ if (chargingOrderListVO.getOrderSource().equals(2)){
+ chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge()!=null?
+ chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_HALF_UP)
+ :new BigDecimal("0"));
+ }else{
+ chargingOrderListVO.setSharingAmount(new BigDecimal("0"));
+ }
}
// 不分页
PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999);
@@ -1740,39 +1778,78 @@
BigDecimal feng = new BigDecimal("0");
BigDecimal ping = new BigDecimal("0");
BigDecimal gu = new BigDecimal("0");
- List<Long> collect = list1.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList());
- List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.lambdaQuery()
- .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list();
+ List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.list();
for (ChargingOrderListVO chargingOrderListVO : list1) {
if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
- if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+ if (chargingOrderListVO.getPaymentAmount()!=null){
+ if (chargingOrderListVO.getOrderSource().equals(2)){
+ paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0"));
+ }else{
+ 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 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
- .collect(Collectors.toList());
- for (TChargingOrderAccountingStrategy temp : list2) {
- switch (temp.getType()){
- case 1:
- if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
- if (temp.getChargingCapacity()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
- if (temp.getChargingCapacity()!=null)jianService = jianService.add(temp.getServiceCharge());
- break;
- case 2:
- if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
- if (temp.getChargingCapacity()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
- if (temp.getChargingCapacity()!=null)fengService = fengService.add(temp.getServiceCharge());
- break;
- case 3:
- if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
- if (temp.getChargingCapacity()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
- if (temp.getChargingCapacity()!=null)pingService = pingService.add(temp.getServiceCharge());
- break;
- case 4:
- if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
- if (temp.getChargingCapacity()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
- if (temp.getChargingCapacity()!=null)guService = guService.add(temp.getServiceCharge());
- break;
+ if (chargingOrderListVO.getServiceCharge()!=null){
+ if (chargingOrderListVO.getOrderSource().equals(2)){
+ serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ }else{
+ serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
+ }
+ }
+ if (!chargingOrderListVO.getOrderSource().equals(2)){
+ List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
+ .collect(Collectors.toList());
+ for (TChargingOrderAccountingStrategy temp : list2) {
+ switch (temp.getType()){
+ case 1:
+ if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge());
+ break;
+ case 2:
+ if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge());
+ break;
+ case 3:
+ if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge());
+ break;
+ case 4:
+ if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge());
+ break;
+ }
+ }
+ }else{
+ List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId()))
+ .collect(Collectors.toList());
+ for (TChargingOrderAccountingStrategy temp : list2) {
+ switch (temp.getType()){
+ case 1:
+ if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ break;
+ case 2:
+ if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ break;
+ case 3:
+ if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ break;
+ case 4:
+ if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity());
+ if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence());
+ if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)));
+ break;
+ }
}
}
}
@@ -1781,28 +1858,29 @@
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);
if (add.compareTo(new BigDecimal("0"))!=0){
- 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.setCapacityProportion(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.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.setElectronicProportion(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"))+"%");
}else{
chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
+"0"+"%/"
@@ -1932,7 +2010,12 @@
chargingOrderListInfoVO.setUid(chargingOrder.getId().toString());
chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount());
- chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
+ if (chargingOrder.getOrderSource().equals(2)){
+ chargingOrderListInfoVO.setSharingAmount(chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP));
+ }else{
+ chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount());
+
+ }
// 查询费用明细列表
List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery()
.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())
@@ -2084,7 +2167,7 @@
AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
BeanUtils.copyProperties(strategyDetail, vo1);
vo1.setChargingCapacity(sharp_peak_charge);
- lists.add(vo1);
+ lists.add(0, vo1);
}
//第二天的
@@ -2211,42 +2294,19 @@
total = total.add(electrovalenc.add(originalServicePrice));
}
+ BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
+ //折扣金额
+ BigDecimal discountAmount = chargingOrder.getVipDiscountAmount();
//原金额
BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
- BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
//总金额(充值金额+会员折扣金额)
- BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
+ BigDecimal decimal = rechargeAmount.add(discountAmount);
//退款金额(已经计算了折扣优惠部分)
//如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
- BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
- BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
- //折扣金额
- BigDecimal discountAmount = BigDecimal.ZERO;
- if(null != chargingOrder.getVipDiscount()){
- TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
- //判断会员是否还有充电优惠次数
- 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())));
- TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
- BigDecimal maximumDeduction = vip.getMaximumDeduction();
- //普通会员有最高优惠限制
- if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
- discountAmount = maximumDeduction;
- }
- }
- }
- //会员折扣金额
- discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
- payAmount = payAmount.subtract(discountAmount);
+ //支付金额
+ BigDecimal payAmount = rechargeAmount.subtract(refundAmount);
+ //实际充值服务费-会员折扣
periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
TChargingOrder order = new TChargingOrder();
@@ -2268,10 +2328,12 @@
order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
order.setStatus(5);
order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
- order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN));
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.setVipDiscount(BigDecimal.valueOf(1));
+ }
//计算优惠券
BigDecimal couponDiscount = BigDecimal.ZERO;
@@ -2325,7 +2387,9 @@
}
//优惠券优惠金额
couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
+ //退款金额+优惠券
refundAmount = refundAmount.add(couponDiscount);
+ //实际支付金额-优惠券
payAmount = payAmount.subtract(couponDiscount);
if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
@@ -2444,7 +2508,8 @@
chargingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount");
- BigDecimal refund_fee = new BigDecimal(amount1.get("refund_fee").toString()).divide(new BigDecimal(100));
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
chargingOrderRefund.setRefundFee(refund_fee);
chargingOrderRefundService.updateById(chargingOrderRefund);
}
@@ -2610,7 +2675,8 @@
chargingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- BigDecimal refund_fee = new BigDecimal(amount1.get("refund_fee").toString()).divide(new BigDecimal(100));
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
chargingOrderRefund.setRefundFee(refund_fee);
chargingOrderRefundService.updateById(chargingOrderRefund);
}
@@ -2677,7 +2743,8 @@
shoppingOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- BigDecimal refund_fee = new BigDecimal(amount1.get("refund_fee").toString()).divide(new BigDecimal(100));
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
chargingOrderRefund.setRefundFee(refund_fee);
shoppingOrderRefundService.updateById(chargingOrderRefund);
}
@@ -2741,7 +2808,8 @@
vipOrderRefundService.save(chargingOrderRefund);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
- BigDecimal refund_fee = new BigDecimal(amount1.get("refund_fee").toString()).divide(new BigDecimal(100));
+ Object refund_fee1 = amount1.get("refund_fee");
+ BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
chargingOrderRefund.setRefundFee(refund_fee);
vipOrderRefundService.updateById(chargingOrderRefund);
}
@@ -2845,8 +2913,8 @@
}
// 累加分佣
- if (tChargingOrder.getSharingAmount()!=null) {
- sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+ if (tChargingOrder.getOrderSource()==2) {
+ sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
}
// 累加电费
if (tChargingOrder.getElectrovalence()!=null) {
@@ -2854,8 +2922,11 @@
}
// 累加服务费
if (tChargingOrder.getServiceCharge()!=null){
- serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
-
+ if (tChargingOrder.getOrderSource()==2) {
+ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN));
+ }else{
+ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+ }
}
// 累加会员折扣
if (tChargingOrder.getVipDiscountAmount()!=null){
@@ -3683,7 +3754,6 @@
chargingOrder.setStatus(2);
chargingOrder.setPayTime(LocalDateTime.now());
chargingOrder.setChargeAmount(chargingOrder.getRechargeAmount());
- chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
this.save(chargingOrder);
Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
--
Gitblit v1.7.1