From d039f7c8ce54963b3513293dc923771971f16a72 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 29 四月 2026 19:47:40 +0800
Subject: [PATCH] feat:冒烟修改
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 341 ++++++++++++++++++++-----
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java | 6
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java | 4
ruoyi-gateway/src/main/resources/logback.xml | 5
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderBalanceIncomeDetailVO.java | 20 +
ruoyi-service/ruoyi-integration/src/main/resources/logback.xml | 5
ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml | 5
ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml | 5
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java | 10
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 7
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java | 11
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 58 ++++
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 212 ++++++++++++---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 15 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java | 4
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java | 16 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ExchangeCodeDetailExportVO.java | 19 -
21 files changed, 613 insertions(+), 150 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
index 1f22d37..cd6488f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
@@ -46,6 +46,14 @@
@TableField("refund_amount")
private BigDecimal refundAmount;
+ @ApiModelProperty(value = "本次余额退款金额")
+ @TableField("balance_refund_amount")
+ private BigDecimal balanceRefundAmount;
+
+ @ApiModelProperty(value = "本次第三方退款金额")
+ @TableField("third_refund_amount")
+ private BigDecimal thirdRefundAmount;
+
@ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)")
@TableField("refund_status")
private Integer refundStatus;
@@ -97,6 +105,9 @@
@TableField(exist = false)
private Integer type;
+ @ApiModelProperty(value = "充电支付模式:1=余额支付,2=余额组合支付,3=第三方支付")
+ @TableField(exist = false)
+ private Integer payMethod;
@ApiModelProperty(value = "第三方支付流水号")
@TableField(exist = false)
private String serailNumber;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
index 523c6b6..c221c6c 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
@@ -31,6 +31,8 @@
private String endTime;
@ApiModelProperty(value = "订单来源 1明星 2快电 3新电途")
private Integer orderSource;
+ @ApiModelProperty(value = "支付方式筛选 1微信支付 2支付宝支付 3余额支付")
+ private Integer paymentType;
@ApiModelProperty(value = "用户ids 前端忽略")
private List<Long> userIds;
@ApiModelProperty(value = "站点ids 前端忽略")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderBalanceIncomeDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderBalanceIncomeDetailVO.java
new file mode 100644
index 0000000..157b640
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderBalanceIncomeDetailVO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.api.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "充电桩订单余额收入明细", description = "按兑换码卡包统计余额收入和赠送收入")
+public class ChargingOrderBalanceIncomeDetailVO {
+ @ApiModelProperty(value = "卡包ID")
+ private Long packageId;
+ @ApiModelProperty(value = "卡包名称")
+ private String packageName;
+ @ApiModelProperty(value = "余额收入")
+ private BigDecimal balanceIncome;
+ @ApiModelProperty(value = "赠送收入")
+ private BigDecimal giftIncome;
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
index e63d3f6..c09eb32 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -18,6 +18,8 @@
private Integer status;
@ApiModelProperty(value = "充值支付方式(1=微信,2=支付宝)")
private Integer rechargePaymentType;
+ @ApiModelProperty(value = "支付方式(1=余额支付,2=组合支付,3=第三方支付)")
+ private Integer payMethod;
@ApiModelProperty(value = "充值支付状态(1=待支付,2=已支付)")
private Integer rechargePaymentStatus;
@ApiModelProperty(value = "电站id")
@@ -62,6 +64,10 @@
private String phone;
@ApiModelProperty(value = "充电到账金额")
private BigDecimal paymentAmount;
+ @ApiModelProperty(value = "现金支付金额")
+ private BigDecimal thirdPayAmount;
+ @ApiModelProperty(value = "余额支付金额")
+ private BigDecimal balancePayAmount;
@ApiModelProperty(value = "充电后剩余金额")
private BigDecimal residualAmount;
@ApiModelProperty(value = "累计电费")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
index f1304f5..d4b79d0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -23,6 +23,10 @@
private Long chargingSecond;
@ApiModelProperty(value = "平台手续费")
private BigDecimal platFormMoney;
+ @ApiModelProperty(value = "余额收入")
+ private BigDecimal balanceIncome;
+ @ApiModelProperty(value = "赠送费用")
+ private BigDecimal balanceGiftIncome;
@ApiModelProperty(value = "车牌号")
private String licensePlate;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
index 5929188..df994ba 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
@@ -22,4 +22,20 @@
private BigDecimal electronicMoney;
@ApiModelProperty(value = "服务费")
private BigDecimal serviceMoney;
+ @ApiModelProperty(value = "平台收入汇总")
+ private BigDecimal platformIncomeTotal;
+ @ApiModelProperty(value = "合作商收入汇总")
+ private BigDecimal partnerIncomeTotal;
+ @ApiModelProperty(value = "微信收入")
+ private BigDecimal wechatIncome;
+ @ApiModelProperty(value = "支付宝收入")
+ private BigDecimal alipayIncome;
+ @ApiModelProperty(value = "余额收入")
+ private BigDecimal balanceIncome;
+ @ApiModelProperty(value = "余额赠送")
+ private BigDecimal balanceGiftIncome;
+ @ApiModelProperty(value = "白名单充电收入")
+ private BigDecimal whitelistChargingIncome;
+ @ApiModelProperty(value = "白名单退款")
+ private BigDecimal whitelistRefund;
}
diff --git a/ruoyi-gateway/src/main/resources/logback.xml b/ruoyi-gateway/src/main/resources/logback.xml
index cae0868..f766a72 100644
--- a/ruoyi-gateway/src/main/resources/logback.xml
+++ b/ruoyi-gateway/src/main/resources/logback.xml
@@ -7,8 +7,9 @@
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
- <property name="log.path" value="/data/log/app/ruoyi-gateway"/>
-
+<!-- <property name="log.path" value="/data/log/app/ruoyi-gateway"/>-->
+ <property name="log.path" value="/Users/mitao/Documents/log/mx_charging_pile/log/app/ruoyi-gateway"/>
+
<!--0. 日志格式和颜色渲染 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index 779baa4..bcb5e3a 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -734,6 +734,13 @@
}
+ @RequiresPermissions(value = {"/appUser/select", "/vipList/select"}, logical = Logical.OR)
+ @ApiOperation(value = "用户详情余额明细", tags = {"后台-用户管理-用户列表"})
+ @PostMapping(value = "/user/balance/page")
+ public R<Page<TExchangeCodeUseRecord>> adminBalanceDetail(@RequestBody ExchangeCodeUseRecordQuery queryDto) {
+ return otherClient.exchangeCodeUseRecordPage(queryDto);
+ }
+
@ApiOperation(value = "余额明细", tags = {"小程序-个人中心"})
@PostMapping(value = "/user/balance/page1")
public R<Page<TExchangeCodeUseRecord>> balanceDetail(@RequestBody ExchangeCodeUseRecordQuery queryDto) {
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
index 0460761..3865fab 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml
@@ -7,8 +7,9 @@
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
- <property name="log.path" value="/data/log/app/ruoyi-chargingPile"/>
-
+<!-- <property name="log.path" value="/data/log/app/ruoyi-chargingPile"/>-->
+ <property name="log.path" value="/Users/mitao/Documents/log/mx_charging_pile/log/app/ruoyi-chargingPile"/>
+
<!--0. 日志格式和颜色渲染 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
diff --git a/ruoyi-service/ruoyi-integration/src/main/resources/logback.xml b/ruoyi-service/ruoyi-integration/src/main/resources/logback.xml
index d2aaf1f..0d83de9 100644
--- a/ruoyi-service/ruoyi-integration/src/main/resources/logback.xml
+++ b/ruoyi-service/ruoyi-integration/src/main/resources/logback.xml
@@ -7,8 +7,9 @@
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
- <property name="log.path" value="/data/log/app/ruoyi-integration"/>
-
+<!-- <property name="log.path" value="/data/log/app/ruoyi-integration"/>-->
+ <property name="log.path" value="/Users/mitao/Documents/log/mx_charging_pile/log/app/ruoyi-integration"/>
+
<!--0. 日志格式和颜色渲染 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml b/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
index 3ab2ecd..0a8e4b2 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
+++ b/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
@@ -7,8 +7,9 @@
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
- <property name="log.path" value="/data/log/app/ruoyi-jianguan"/>
-
+<!-- <property name="log.path" value="/data/log/app/ruoyi-jianguan"/>-->
+ <property name="log.path" value="/Users/mitao/Documents/log/mx_charging_pile/log/app/ruoyi-jianguan"/>
+
<!--0. 日志格式和颜色渲染 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
index f76a621..6a706f7 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -172,6 +172,9 @@
}
}
+ tChargingOrderExport.setPaymentMethod(getPaymentMethod(chargingOrderListVO));
+ tChargingOrderExport.setCashPayAmount(formatMoney(getCashPayAmount(chargingOrderListVO)));
+ tChargingOrderExport.setBalancePayAmount(formatMoney(getBalancePayAmount(chargingOrderListVO)));
if (chargingOrderListVO.getCreateTime()!=null){
String s1 = DateUtils.localDateTimeToString(chargingOrderListVO.getCreateTime());
tChargingOrderExport.setCreateTime(s1);
@@ -218,7 +221,6 @@
tChargingOrderExport.setServiceChargePrice("");
tChargingOrderExport.setServiceChargePriceLook("");
tChargingOrderExport.setCumulativeChargingTime(chargingOrderListVO.getChargingSecond() + "");
- tChargingOrderExport.setRechargeAmount(chargingOrderListVO.getRechargeAmount().toString());
tChargingOrderExport.setRefundAmount(null != chargingOrderListVO.getRefundAmount() ? chargingOrderListVO.getRefundAmount().toString() : "");
tChargingOrderExport.setStartSoc(chargingOrderListVO.getStartSoc());
tChargingOrderExport.setEndtSoc(chargingOrderListVO.getEndSoc());
@@ -283,6 +285,59 @@
e.printStackTrace();
}
}
+ }
+
+ private String getPaymentMethod(ChargingOrderListVO chargingOrderListVO) {
+ Integer payMethod = chargingOrderListVO.getPayMethod();
+ String thirdPayName = getThirdPayName(chargingOrderListVO.getRechargePaymentType());
+ if (Integer.valueOf(1).equals(payMethod)) {
+ return "余额支付";
+ }
+ if (Integer.valueOf(2).equals(payMethod)) {
+ return thirdPayName.isEmpty() ? "余额支付" : "余额支付+" + thirdPayName;
+ }
+ if (Integer.valueOf(3).equals(payMethod)) {
+ return thirdPayName;
+ }
+ return thirdPayName;
+ }
+
+ private String getThirdPayName(Integer rechargePaymentType) {
+ if (Integer.valueOf(1).equals(rechargePaymentType)) {
+ return "微信支付";
+ }
+ if (Integer.valueOf(2).equals(rechargePaymentType) || Integer.valueOf(3).equals(rechargePaymentType)) {
+ return "支付宝支付";
+ }
+ return "";
+ }
+
+ private BigDecimal getCashPayAmount(ChargingOrderListVO chargingOrderListVO) {
+ if (chargingOrderListVO.getThirdPayAmount() != null) {
+ return chargingOrderListVO.getThirdPayAmount();
+ }
+ if (Integer.valueOf(3).equals(chargingOrderListVO.getPayMethod())) {
+ return nullToZero(chargingOrderListVO.getPaymentAmount());
+ }
+ return BigDecimal.ZERO;
+ }
+
+ private BigDecimal getBalancePayAmount(ChargingOrderListVO chargingOrderListVO) {
+ if (chargingOrderListVO.getBalancePayAmount() != null) {
+ return chargingOrderListVO.getBalancePayAmount();
+ }
+ if (Integer.valueOf(1).equals(chargingOrderListVO.getPayMethod())) {
+ return nullToZero(chargingOrderListVO.getPaymentAmount());
+ }
+ return BigDecimal.ZERO;
+ }
+
+ private BigDecimal nullToZero(BigDecimal amount) {
+ return amount == null ? BigDecimal.ZERO : amount;
+ }
+
+ private String formatMoney(BigDecimal amount) {
+ return nullToZero(amount).setScale(2, RoundingMode.HALF_UP).toPlainString();
}
@@ -356,4 +411,3 @@
}
}
-
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 972893d..a8f1216 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
@@ -277,6 +277,11 @@
payOrderInfoDto.setRefundAmount(byId.getRefundAmount());
payOrderInfoDto.setRechargeAmount(byId.getRechargeAmount());
payOrderInfoDto.setFinalAmount(byId.getRechargeAmount().subtract(byId.getRefundAmount()));
+ payOrderInfoDto.setPayMethod(byId.getPayMethod());
+ payOrderInfoDto.setBalancePayAmount(byId.getBalancePayAmount());
+ payOrderInfoDto.setThirdPayAmount(byId.getThirdPayAmount());
+ payOrderInfoDto.setBalanceRefundAmount(byId.getBalanceRefundAmount());
+ payOrderInfoDto.setThirdRefundAmount(byId.getThirdRefundAmount());
return R.ok(payOrderInfoDto);
case 2:
TShoppingOrder byId1 = shoppingOrderService.getById(orderId);
@@ -525,6 +530,16 @@
}
+ @RequiresPermissions(value = {"/chargingPileOrder"}, logical = Logical.OR)
+ @ResponseBody
+ @PostMapping(value = "/balanceIncomeDetail")
+ @ApiOperation(value = "充电桩订单余额收入明细", tags = {"管理后台-订单管理"})
+ public AjaxResult<List<ChargingOrderBalanceIncomeDetailVO>> balanceIncomeDetail(@RequestBody ChargingOrderQuery dto) {
+ List<ChargingOrderBalanceIncomeDetailVO> res = chargingOrderService.balanceIncomeDetail(dto);
+ return AjaxResult.success(res);
+ }
+
+
@RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR)
@ResponseBody
@GetMapping(value = "/chargingOrderInfo")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
index c776811..1eb02d8 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
@@ -27,6 +27,16 @@
private BigDecimal refundAmount;
private BigDecimal rechargeAmount;
private BigDecimal finalAmount;
+ @ApiModelProperty("充电支付模式:1=余额支付,2=余额组合支付,3=第三方支付")
+ private Integer payMethod;
+ @ApiModelProperty("余额支付金额")
+ private BigDecimal balancePayAmount;
+ @ApiModelProperty("第三方支付金额")
+ private BigDecimal thirdPayAmount;
+ @ApiModelProperty("余额退款金额")
+ private BigDecimal balanceRefundAmount;
+ @ApiModelProperty("第三方退款金额")
+ private BigDecimal thirdRefundAmount;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
index d17aada..c8188bb 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java
@@ -5,8 +5,6 @@
import lombok.Data;
import java.io.Serializable;
-import java.math.BigDecimal;
-
@Data
@ApiModel(value = "充电时段统计-导出")
public class TChargingOrderExport implements Serializable {
@@ -79,8 +77,12 @@
private String serviceChargePriceLook;
@Excel(name = "充电时长(分钟)",width = 30)
private String cumulativeChargingTime;
- @Excel(name = "充值金额",width = 30)
- private String rechargeAmount;
+ @Excel(name = "支付方式",width = 30)
+ private String paymentMethod;
+ @Excel(name = "现金支付金额",width = 30)
+ private String cashPayAmount;
+ @Excel(name = "余额支付金额",width = 30)
+ private String balancePayAmount;
@Excel(name = "退款金额",width = 30)
private String refundAmount;
@Excel(name = "充电前面soc",width = 30)
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 4084e22..b72e2a1 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
@@ -11,6 +11,7 @@
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.vo.ChargingOrderListVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
+import com.ruoyi.order.api.vo.ChargingOrderBalanceIncomeDetailVO;
import com.ruoyi.order.api.vo.TChargingOrderVo;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.vo.OrderCountByDate;
@@ -59,6 +60,11 @@
List<ChargingOrderVO> chargingOrder(@Param("pageInfo") PageInfo<ChargingOrderVO> pageInfo, @Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
Map<String, Object> chargingOrderNolimit( @Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
+ Map<String, Object> chargingOrderFundSummary(@Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
+ List<Long> chargingOrderSummaryOrderIds(@Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11);
+ Map<String, Object> exchangeCodeBalanceSummary(@Param("orderIds") List<Long> orderIds);
+ List<Map<String, Object>> exchangeCodeBalanceIncomeByOrderIds(@Param("orderIds") List<Long> orderIds);
+ List<ChargingOrderBalanceIncomeDetailVO> exchangeCodeBalanceIncomeDetail(@Param("orderIds") List<Long> orderIds);
List<PayOrderDto> payOrderQuery(@Param("pageInfo")PageInfo<PayOrderDto> pageInfo,@Param("data") PayOrderQueryDto payOrderQueryDto);
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 9ed14ff..33c1691 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
@@ -144,6 +144,8 @@
TCharingOrderVO chargingOrder(ChargingOrderQuery dto);
+ List<ChargingOrderBalanceIncomeDetailVO> balanceIncomeDetail(ChargingOrderQuery dto);
+
R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto);
R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto);
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 5fc0df7..8dfdac4 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
@@ -474,6 +474,21 @@
}
}
+ private void finishManualChargingRefund(TChargingOrder chargingOrder, TChargingOrderRefund refund,
+ BigDecimal refundAmount, BigDecimal balanceRefundAmount, BigDecimal thirdRefundAmount) {
+ chargingOrder.setRefundStatus(2);
+ chargingOrder.setRefundAmount(money(chargingOrder.getRefundAmount()).add(refundAmount));
+ chargingOrder.setBalanceRefundAmount(money(chargingOrder.getBalanceRefundAmount()).add(balanceRefundAmount));
+ chargingOrder.setThirdRefundAmount(money(chargingOrder.getThirdRefundAmount()).add(thirdRefundAmount));
+ this.baseMapper.updateById(chargingOrder);
+ refund.setRefundStatus(2);
+ chargingOrderRefundService.save(refund);
+ if (balanceRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
+ changeUserBalance(chargingOrder.getAppUserId(), balanceRefundAmount);
+ recordBalanceRefund(chargingOrder, balanceRefundAmount, refund.getRefundCode());
+ }
+ }
+
@Override
public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) {
Long userId = tokenService.getLoginUserApplet().getUserId();
@@ -1163,6 +1178,8 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
chargingOrderRefund.setRefundAmount(totalRefundAmount);
+ chargingOrderRefund.setBalanceRefundAmount(balanceRefundAmount);
+ chargingOrderRefund.setThirdRefundAmount(thirdRefundAmount);
chargingOrderRefund.setRefundStatus(1);
chargingOrderRefund.setPayType(rechargePaymentType);
chargingOrderRefund.setRefundStatus(1);
@@ -1190,7 +1207,6 @@
return;
}
this.updateById(chargingOrder);
- chargingOrderRefund.setRefundAmount(thirdRefundAmount);
if (thirdRefundAmount.compareTo(BigDecimal.ZERO) > 0 && 1 == rechargePaymentType) {
WxPaymentRefundModel model = new WxPaymentRefundModel();
model.setOut_trade_no(chargingOrder.getCode());
@@ -1310,6 +1326,8 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
chargingOrderRefund.setRefundAmount(money);
+ chargingOrderRefund.setBalanceRefundAmount(BigDecimal.ZERO);
+ chargingOrderRefund.setThirdRefundAmount(money);
chargingOrderRefund.setRefundStatus(1);
chargingOrderRefund.setPayType(rechargePaymentType);
chargingOrderRefund.setRefundStatus(1);
@@ -1413,9 +1431,9 @@
one.setRefundTime(LocalDateTime.now());
chargingOrderRefundService.updateById(one);
- if (money(order.getBalanceRefundAmount()).compareTo(BigDecimal.ZERO) > 0) {
- changeUserBalance(order.getAppUserId(), money(order.getBalanceRefundAmount()));
- recordBalanceRefund(order, money(order.getBalanceRefundAmount()), one.getRefundCode());
+ if (money(one.getBalanceRefundAmount()).compareTo(BigDecimal.ZERO) > 0) {
+ changeUserBalance(order.getAppUserId(), money(one.getBalanceRefundAmount()));
+ recordBalanceRefund(order, money(one.getBalanceRefundAmount()), one.getRefundCode());
}
TChargingOrder chargingOrder = new TChargingOrder();
chargingOrder.setId(one.getChargingOrderId());
@@ -1741,39 +1759,11 @@
// 查询当前登陆人按钮权限
SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
Integer roleType = sysUser.getRoleType();
- //如果没传siteId,获取当前登陆人所有的siteIds
- List<Integer> siteIds = new ArrayList<>();
- if (dto.getSiteId() == null) {
- if (userId != null) {
- List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
- for (GetSiteListDTO datum : data) {
- siteIds.add(datum.getId());
- }
- }
- } else {
- siteIds.add(dto.getSiteId());
- }
- if (siteIds.isEmpty()) {
- siteIds.add(-1);
- } else {
- if (roleType == 2) {
- List<Integer> integers = new ArrayList<>();
- for (Integer siteId : siteIds) {
- // 校验有没有这个站点的权限
- List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
-
- Boolean b = t1.get(1);
- if (b) {
- integers.add(siteId);
- }
- }
- siteIds = integers;
- }
- }
- if (siteIds.isEmpty()) siteIds.add(-1);
- dto.setSiteIds(siteIds);
- List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
- List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
+ setChargingOrderAuthSiteIds(dto, sysUser, userId, roleType);
+ List<Integer> siteIds = dto.getSiteIds();
+ List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
+ fillChargingOrderBalanceIncome(list);
+ List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list();
for (ChargingOrderVO chargingOrderVO : list) {
if (roleType == 2) {
for (Integer siteId : siteIds) {
@@ -1837,25 +1827,226 @@
}
}
+ fillEmptyChargingOrderSummary(tCharingOrderVO);
Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2);
if (null != map) {
- tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total"));
- tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time"));
- tCharingOrderVO.setIncome(map.get("income") == null ? BigDecimal.ZERO : ((BigDecimal) map.get("income")).setScale(2, RoundingMode.HALF_EVEN));
- tCharingOrderVO.setElectronicMoney(map.get("electronicMoney") == null ? BigDecimal.ZERO : ((BigDecimal) map.get("electronicMoney")).setScale(2, RoundingMode.HALF_EVEN));
- tCharingOrderVO.setServiceMoney(map.get("serviceMoney") == null ? BigDecimal.ZERO : ((BigDecimal) map.get("serviceMoney")).setScale(2, RoundingMode.HALF_EVEN));
- } else {
- tCharingOrderVO.setTotal(BigDecimal.ZERO);
- tCharingOrderVO.setTime(0L);
- tCharingOrderVO.setIncome(BigDecimal.ZERO);
- tCharingOrderVO.setElectronicMoney(BigDecimal.ZERO);
- tCharingOrderVO.setServiceMoney(BigDecimal.ZERO);
+ tCharingOrderVO.setTotal(getSummaryDecimal(map, "total"));
+ tCharingOrderVO.setTime(getSummaryLong(map, "time"));
+ tCharingOrderVO.setIncome(getSummaryDecimal(map, "income"));
+ tCharingOrderVO.setElectronicMoney(getSummaryDecimal(map, "electronicMoney"));
+ tCharingOrderVO.setServiceMoney(getSummaryDecimal(map, "serviceMoney"));
}
+ Map<String, Object> fundMap = this.baseMapper.chargingOrderFundSummary(dto, startTime1, startTime2, endTime1, endTime2);
+ if (null != fundMap) {
+ tCharingOrderVO.setPlatformIncomeTotal(getSummaryDecimal(fundMap, "platformIncomeTotal"));
+ tCharingOrderVO.setPartnerIncomeTotal(getSummaryDecimal(fundMap, "partnerIncomeTotal"));
+ tCharingOrderVO.setWechatIncome(getSummaryDecimal(fundMap, "wechatIncome"));
+ tCharingOrderVO.setAlipayIncome(getSummaryDecimal(fundMap, "alipayIncome"));
+ tCharingOrderVO.setWhitelistChargingIncome(getSummaryDecimal(fundMap, "whitelistChargingIncome"));
+ tCharingOrderVO.setWhitelistRefund(getSummaryDecimal(fundMap, "whitelistRefund"));
+ }
+ Map<String, Object> balanceMap = getExchangeCodeBalanceSummary(dto, startTime1, startTime2, endTime1, endTime2);
+ tCharingOrderVO.setBalanceIncome(getSummaryDecimal(balanceMap, "balanceIncome"));
+ tCharingOrderVO.setBalanceGiftIncome(getSummaryDecimal(balanceMap, "balanceGiftIncome"));
pageInfo.setRecords(list);
tCharingOrderVO.setList(pageInfo);
- return tCharingOrderVO;
+ return tCharingOrderVO;
+ }
+
+ private void fillChargingOrderBalanceIncome(List<ChargingOrderVO> list) {
+ if (list == null || list.isEmpty()) {
+ return;
+ }
+ List<Long> orderIds = list.stream().map(ChargingOrderVO::getId).filter(Objects::nonNull).collect(Collectors.toList());
+ if (orderIds.isEmpty()) {
+ return;
+ }
+ Map<Long, Map<String, Object>> incomeMap = new HashMap<>();
+ List<Map<String, Object>> rows = this.baseMapper.exchangeCodeBalanceIncomeByOrderIds(orderIds);
+ if (rows != null) {
+ for (Map<String, Object> row : rows) {
+ Long orderId = getSummaryLong(row, "orderId");
+ if (orderId != null) {
+ incomeMap.put(orderId, row);
+ }
+ }
+ }
+ for (ChargingOrderVO item : list) {
+ Map<String, Object> row = incomeMap.get(item.getId());
+ item.setBalanceIncome(getSummaryDecimal(row, "balanceIncome"));
+ item.setBalanceGiftIncome(getSummaryDecimal(row, "balanceGiftIncome"));
+ }
+ }
+
+ private void setChargingOrderAuthSiteIds(ChargingOrderQuery dto, SysUser sysUser, Long userId, Integer roleType) {
+ List<Integer> siteIds = new ArrayList<>();
+ if (dto.getSiteId() == null) {
+ if (userId != null) {
+ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+ for (GetSiteListDTO datum : data) {
+ siteIds.add(datum.getId());
+ }
+ }
+ } else {
+ siteIds.add(dto.getSiteId());
+ }
+ if (siteIds.isEmpty()) {
+ siteIds.add(-1);
+ } else if (roleType == 2) {
+ List<Integer> integers = new ArrayList<>();
+ for (Integer siteId : siteIds) {
+ List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData();
+ Boolean b = t1.get(1);
+ if (b) {
+ integers.add(siteId);
+ }
+ }
+ siteIds = integers;
+ }
+ if (siteIds.isEmpty()) {
+ siteIds.add(-1);
+ }
+ dto.setSiteIds(siteIds);
}
-
+
+ @Override
+ public List<ChargingOrderBalanceIncomeDetailVO> balanceIncomeDetail(ChargingOrderQuery dto) {
+ String startTime1 = null;
+ String startTime2 = null;
+ String endTime1 = null;
+ String endTime2 = null;
+ if (StringUtils.hasLength(dto.getStartTime())) {
+ String[] split = dto.getStartTime().split(" - ");
+ startTime1 = split[0];
+ startTime2 = split[1];
+ }
+ if (StringUtils.hasLength(dto.getEndTime())) {
+ String[] split = dto.getEndTime().split(" - ");
+ endTime1 = split[0];
+ endTime2 = split[1];
+ }
+ if (StringUtils.hasLength(dto.getPhone())) {
+ List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
+ if (data == null || data.isEmpty()) {
+ return new ArrayList<>();
+ }
+ dto.setUserIds(data);
+ }
+ Long userId = tokenService.getLoginUser().getUserid();
+ SysUser sysUser = sysUserClient.getSysUser(userId).getData();
+ setChargingOrderAuthSiteIds(dto, sysUser, userId, sysUser.getRoleType());
+ List<Long> orderIds = this.baseMapper.chargingOrderSummaryOrderIds(dto, startTime1, startTime2, endTime1, endTime2);
+ if (orderIds == null || orderIds.isEmpty()) {
+ return new ArrayList<>();
+ }
+ Map<Long, ChargingOrderBalanceIncomeDetailVO> detailMap = new LinkedHashMap<>();
+ int batchSize = 500;
+ for (int i = 0; i < orderIds.size(); i += batchSize) {
+ List<Long> batchIds = orderIds.subList(i, Math.min(i + batchSize, orderIds.size()));
+ List<ChargingOrderBalanceIncomeDetailVO> batchList = this.baseMapper.exchangeCodeBalanceIncomeDetail(batchIds);
+ if (batchList == null || batchList.isEmpty()) {
+ continue;
+ }
+ for (ChargingOrderBalanceIncomeDetailVO item : batchList) {
+ Long packageId = item.getPackageId() == null ? 0L : item.getPackageId();
+ ChargingOrderBalanceIncomeDetailVO detail = detailMap.get(packageId);
+ if (detail == null) {
+ detail = new ChargingOrderBalanceIncomeDetailVO();
+ detail.setPackageId(item.getPackageId());
+ detail.setPackageName(item.getPackageName());
+ detail.setBalanceIncome(BigDecimal.ZERO);
+ detail.setGiftIncome(BigDecimal.ZERO);
+ detailMap.put(packageId, detail);
+ }
+ detail.setBalanceIncome(detail.getBalanceIncome().add(item.getBalanceIncome() == null ? BigDecimal.ZERO : item.getBalanceIncome()));
+ detail.setGiftIncome(detail.getGiftIncome().add(item.getGiftIncome() == null ? BigDecimal.ZERO : item.getGiftIncome()));
+ }
+ }
+ List<ChargingOrderBalanceIncomeDetailVO> result = new ArrayList<>();
+ for (ChargingOrderBalanceIncomeDetailVO detail : detailMap.values()) {
+ BigDecimal balanceIncome = (detail.getBalanceIncome() == null ? BigDecimal.ZERO : detail.getBalanceIncome()).setScale(2, RoundingMode.HALF_EVEN);
+ BigDecimal giftIncome = (detail.getGiftIncome() == null ? BigDecimal.ZERO : detail.getGiftIncome()).setScale(2, RoundingMode.HALF_EVEN);
+ if (balanceIncome.compareTo(BigDecimal.ZERO) == 0 && giftIncome.compareTo(BigDecimal.ZERO) == 0) {
+ continue;
+ }
+ detail.setBalanceIncome(balanceIncome);
+ detail.setGiftIncome(giftIncome);
+ result.add(detail);
+ }
+ return result;
+ }
+
+ private void fillEmptyChargingOrderSummary(TCharingOrderVO tCharingOrderVO) {
+ tCharingOrderVO.setTotal(BigDecimal.ZERO);
+ tCharingOrderVO.setTime(0L);
+ tCharingOrderVO.setIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setElectronicMoney(BigDecimal.ZERO);
+ tCharingOrderVO.setServiceMoney(BigDecimal.ZERO);
+ tCharingOrderVO.setPlatformIncomeTotal(BigDecimal.ZERO);
+ tCharingOrderVO.setPartnerIncomeTotal(BigDecimal.ZERO);
+ tCharingOrderVO.setWechatIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setAlipayIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setBalanceIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setBalanceGiftIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setWhitelistChargingIncome(BigDecimal.ZERO);
+ tCharingOrderVO.setWhitelistRefund(BigDecimal.ZERO);
+ }
+
+ private Map<String, Object> getExchangeCodeBalanceSummary(ChargingOrderQuery dto, String startTime1, String startTime2, String endTime1, String endTime2) {
+ Map<String, Object> totalMap = new HashMap<>();
+ totalMap.put("balanceIncome", BigDecimal.ZERO);
+ totalMap.put("balanceGiftIncome", BigDecimal.ZERO);
+ List<Long> orderIds = this.baseMapper.chargingOrderSummaryOrderIds(dto, startTime1, startTime2, endTime1, endTime2);
+ if (orderIds == null || orderIds.isEmpty()) {
+ return totalMap;
+ }
+ BigDecimal balanceIncome = BigDecimal.ZERO;
+ BigDecimal balanceGiftIncome = BigDecimal.ZERO;
+ int batchSize = 500;
+ for (int i = 0; i < orderIds.size(); i += batchSize) {
+ List<Long> batchIds = orderIds.subList(i, Math.min(i + batchSize, orderIds.size()));
+ Map<String, Object> batchMap = this.baseMapper.exchangeCodeBalanceSummary(batchIds);
+ if (batchMap != null) {
+ balanceIncome = balanceIncome.add(getSummaryDecimal(batchMap, "balanceIncome"));
+ balanceGiftIncome = balanceGiftIncome.add(getSummaryDecimal(batchMap, "balanceGiftIncome"));
+ }
+ }
+ totalMap.put("balanceIncome", balanceIncome);
+ totalMap.put("balanceGiftIncome", balanceGiftIncome);
+ return totalMap;
+ }
+
+ private BigDecimal getSummaryDecimal(Map<String, Object> map, String key) {
+ if (map == null) {
+ return BigDecimal.ZERO;
+ }
+ Object value = map.get(key);
+ if (value == null) {
+ return BigDecimal.ZERO;
+ }
+ if (value instanceof BigDecimal) {
+ return ((BigDecimal) value).setScale(2, RoundingMode.HALF_EVEN);
+ }
+ if (value instanceof Number) {
+ return BigDecimal.valueOf(((Number) value).doubleValue()).setScale(2, RoundingMode.HALF_EVEN);
+ }
+ return new BigDecimal(value.toString()).setScale(2, RoundingMode.HALF_EVEN);
+ }
+
+ private Long getSummaryLong(Map<String, Object> map, String key) {
+ if (map == null) {
+ return 0L;
+ }
+ Object value = map.get(key);
+ if (value == null) {
+ return 0L;
+ }
+ if (value instanceof Number) {
+ return ((Number) value).longValue();
+ }
+ return Long.parseLong(value.toString());
+ }
+
@Override
public R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto) {
PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(), payOrderQueryDto.getPageSize());
@@ -2994,6 +3185,8 @@
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
chargingOrderRefund.setRefundCode("CDF" + sdf1.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
chargingOrderRefund.setRefundAmount(refundAmount);
+ chargingOrderRefund.setBalanceRefundAmount(balanceRefundAmount);
+ chargingOrderRefund.setThirdRefundAmount(thirdRefundAmount);
chargingOrderRefund.setRefundStatus(2);
chargingOrderRefund.setPayType(rechargePaymentType);
chargingOrderRefund.setCode(chargingOrder.getCode());
@@ -3177,8 +3370,27 @@
chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
+ BigDecimal manualRefundAmount = money(payOrderQueryDto.getRefundAmount());
+ BigDecimal refundedThirdAmount = money(tChargingOrder.getThirdRefundAmount());
+ BigDecimal refundableThirdAmount = money(tChargingOrder.getThirdPayAmount()).subtract(refundedThirdAmount);
+ if (refundableThirdAmount.compareTo(BigDecimal.ZERO) < 0) {
+ refundableThirdAmount = BigDecimal.ZERO;
+ }
+ BigDecimal thirdRefundAmount = isBalancePayMode(tChargingOrder.getPayMethod())
+ ? manualRefundAmount.min(refundableThirdAmount).setScale(2, RoundingMode.HALF_UP)
+ : manualRefundAmount;
+ BigDecimal balanceRefundAmount = manualRefundAmount.subtract(thirdRefundAmount).setScale(2, RoundingMode.HALF_UP);
+ if (balanceRefundAmount.compareTo(BigDecimal.ZERO) < 0) {
+ balanceRefundAmount = BigDecimal.ZERO;
+ }
+ chargingOrderRefund.setBalanceRefundAmount(balanceRefundAmount);
+ chargingOrderRefund.setThirdRefundAmount(thirdRefundAmount);
- if (1 == tChargingOrder.getRechargePaymentType()) {
+ if (thirdRefundAmount.compareTo(BigDecimal.ZERO) == 0) {
+ chargingOrderRefund.setRefundSerialNumber("BALANCE");
+ finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
+ }
+ else if (1 == tChargingOrder.getRechargePaymentType()) {
WxPaymentRefundModel model = new WxPaymentRefundModel();
model.setOut_trade_no(tChargingOrder.getCode());
model.setOut_refund_no(chargingOrderRefund.getRefundCode());
@@ -3186,16 +3398,13 @@
model.setReason("取消订单");
model.setNotify_url("/payment/wx/refund/notify");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
- amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
- amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
+ amount.setTotal((isBalancePayMode(tChargingOrder.getPayMethod()) ? money(tChargingOrder.getThirdPayAmount()) : money(tChargingOrder.getRechargeAmount())).multiply(new BigDecimal(100)).intValue());
amount.setCurrency("CNY");
model.setAmount(amount);
R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
if (200 == orderR.getCode()) {
- tChargingOrder.setRefundStatus(2);
- tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
+ finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
//手续费
Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
Object refund_fee1 = amount1.get("refund_fee");
@@ -3205,33 +3414,27 @@
}
}
- if (2 == tChargingOrder.getRechargePaymentType()) {
+ else if (2 == tChargingOrder.getRechargePaymentType()) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(tChargingOrder.getCode());
dto.setOutRequestNo(tChargingOrder.getCode());
- dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+ dto.setRefundAmount(thirdRefundAmount.toString());
dto.setRefundReason("取消订单");
RefundResp resp = aliPaymentClient.refund(dto).getData();
if (null != resp) {
- chargingOrderRefund.setRefundStatus(2);
- chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
+ finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
}
}
- if (3 == tChargingOrder.getRechargePaymentType()) {
+ else if (3 == tChargingOrder.getRechargePaymentType()) {
RefundReq dto = new RefundReq();
dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber());
dto.setOutRequestNo(tChargingOrder.getCode());
- dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
+ dto.setRefundAmount(thirdRefundAmount.toString());
dto.setRefundReason("取消订单");
RefundResp resp = h5AliPaymentClient.refund(dto).getData();
if (null != resp && "10000".equals(resp.getCode())) {
- chargingOrderRefund.setRefundStatus(2);
- chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
- this.baseMapper.updateById(tChargingOrder);
- chargingOrderRefundService.save(chargingOrderRefund);
+ finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
}
}
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 60fee7f..a4af1cc 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
@@ -118,6 +118,15 @@
<if test="req.orderSource != null and req.orderSource == 3 ">
and t1.tripartite_platform_name = 'XinDianTu'
</if>
+ <if test="req.paymentType != null and req.paymentType == 1 ">
+ and t1.recharge_payment_type = 1
+ </if>
+ <if test="req.paymentType != null and req.paymentType == 2 ">
+ and t1.recharge_payment_type in (2, 3)
+ </if>
+ <if test="req.paymentType != null and req.paymentType == 3 ">
+ and t1.pay_method in (1, 2)
+ </if>
<if test="req.siteId != null ">
and t1.site_id = #{req.siteId}
</if>
@@ -266,6 +275,8 @@
re.refund_title,
re.refund_reason,
re.refund_amount,
+ re.balance_refund_amount,
+ re.third_refund_amount,
re.refund_total_amount,
re.refund_time,
re.pay_type,
@@ -276,6 +287,7 @@
co.create_time as pay_time,
co.id as order_id,
co.app_user_id as user_id,
+ co.pay_method as pay_method,
1 as type
FROM t_charging_order_refund re
LEFT JOIN t_charging_order co ON re.charging_order_id = co.id
@@ -287,6 +299,8 @@
re.refund_title,
re.refund_reason,
re.refund_amount,
+ 0 as balance_refund_amount,
+ re.refund_amount as third_refund_amount,
re.refund_total_amount,
re.refund_time,
re.pay_type,
@@ -297,6 +311,7 @@
so.create_time as pay_time,
so.id as order_id,
so.app_user_id as user_id,
+ 3 as pay_method,
2 as type
FROM t_shopping_order_refund re
LEFT JOIN t_shopping_order so on re.shopping_order_id = so.id
@@ -308,6 +323,8 @@
vr.refund_title,
vr.refund_reason,
vr.refund_amount,
+ 0 as balance_refund_amount,
+ vr.refund_amount as third_refund_amount,
vr.refund_total_amount,
vr.refund_time,
vr.pay_type,
@@ -318,6 +335,7 @@
vo.create_time as pay_time,
vo.id as order_id,
vo.app_user_id as user_id,
+ 3 as pay_method,
3 as type
FROM t_vip_order_refund vr
LEFT JOIN t_vip_order vo on vr.vip_order_id = vo.id
@@ -992,6 +1010,7 @@
b.`name` as siteName,
a.`status`,
a.recharge_payment_type as rechargePaymentType,
+ a.pay_method as payMethod,
a.recharge_payment_status as rechargePaymentStatus,
a.site_id as siteId,
a.charging_pile_id as chargingPileId,
@@ -1014,6 +1033,8 @@
c.license_plate as licensePlate,
f.phone,
a.payment_amount as paymentAmount,
+ a.third_pay_amount as thirdPayAmount,
+ a.balance_pay_amount as balancePayAmount,
e.refund_amount as residualAmount,
h.electrovalence as electrovalence,
CASE WHEN a.order_source = 1 THEN h.serviceCharge ELSE h.serviceCharge * 0.8 END as serviceCharge,
@@ -1090,7 +1111,10 @@
aa.electricity,
aa.rechargeAmount,
aa.rechargePaymentType,
+ aa.payMethod,
aa.paymentAmount,
+ aa.thirdPayAmount,
+ aa.balancePayAmount,
aa.electrovalence,
aa.serviceCharge,
aa.orderSource,
@@ -1121,7 +1145,10 @@
b.electricity,
b.recharge_amount as rechargeAmount,
b.recharge_payment_type as rechargePaymentType,
+ b.pay_method as payMethod,
b.payment_amount as paymentAmount,
+ b.third_pay_amount as thirdPayAmount,
+ b.balance_pay_amount as balancePayAmount,
b.electrovalence,
b.service_charge as serviceCharge,
b.order_source as orderSource,
@@ -1189,8 +1216,8 @@
and b.end_time between #{endTime1} and #{endTime2}
</if>
and b.start_time IS NOT NULL and b.end_time is not null
- ) as aa group by aa.id, aa.`code`, aa.siteId, aa.siteName, aa.orderType, aa.terminalName, aa.electricity, aa.rechargeAmount, aa.paymentAmount, aa.electrovalence, aa.serviceCharge, aa.tripartitePlatformName,
- aa.startTime, aa.endTime, aa.chargingSecond, aa.startSoc, aa.endSoc, aa.`status`, aa.endMode, aa.phone, aa.licensePlate, aa.orderSource, aa.rechargePaymentType order by aa.startTime desc
+ ) as aa group by aa.id, aa.`code`, aa.siteId, aa.siteName, aa.orderType, aa.terminalName, aa.electricity, aa.rechargeAmount, aa.paymentAmount, aa.thirdPayAmount, aa.balancePayAmount, aa.electrovalence, aa.serviceCharge, aa.tripartitePlatformName,
+ aa.startTime, aa.endTime, aa.chargingSecond, aa.startSoc, aa.endSoc, aa.`status`, aa.endMode, aa.phone, aa.licensePlate, aa.orderSource, aa.rechargePaymentType, aa.payMethod order by aa.startTime desc
</select>
@@ -2057,6 +2084,64 @@
</select>
+ <sql id="ChargingOrderSummaryWhere">
+ where b.del_flag = 0 and b.recharge_payment_status = 2 and b.start_time IS NOT NULL and b.end_time is not null
+ <if test="null != req.code and req.code!=''">
+ and b.code LIKE CONCAT('%',#{req.code},'%')
+ </if>
+ <if test="null != req.userIds and req.userIds.size()>0">
+ and b.app_user_id in
+ <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="null != req.siteIds and req.siteIds.size()>0">
+ and b.site_id in
+ <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ <if test="req.orderType != null ">
+ and b.order_type = #{req.orderType}
+ </if>
+ <if test="req.status != null ">
+ and b.status = #{req.status}
+ </if>
+ <if test="req.orderSource != null and req.orderSource == 1 ">
+ and (b.order_source = 0 or b.order_source = 1 )
+ </if>
+ <if test="req.orderSource != null and req.orderSource == 2 ">
+ and b.tripartite_platform_name = 'KuaiDian'
+ </if>
+ <if test="req.orderSource != null and req.orderSource == 3 ">
+ and b.tripartite_platform_name = 'XinDianTu'
+ </if>
+ <if test="req.paymentType != null and req.paymentType == 1 ">
+ and b.recharge_payment_type = 1
+ </if>
+ <if test="req.paymentType != null and req.paymentType == 2 ">
+ and b.recharge_payment_type in (2, 3)
+ </if>
+ <if test="req.paymentType != null and req.paymentType == 3 ">
+ and b.pay_method in (1, 2)
+ </if>
+ <if test="req.siteId != null ">
+ and b.site_id = #{req.siteId}
+ </if>
+ <if test="req.pileId != null ">
+ and b.charging_pile_id = #{req.pileId}
+ </if>
+ <if test="req.gunId != null ">
+ and b.charging_gun_id = #{req.gunId}
+ </if>
+ <if test="startTime1 != null and startTime1!=''">
+ and (b.pay_time between #{startTime1} and #{startTime2})
+ </if>
+ <if test="endTime1 != null and endTime1!=''">
+ and (b.end_time between #{endTime1} and #{endTime2})
+ </if>
+ </sql>
+
<select id="chargingOrderNolimit" resultType="map">
select
sum(aa.time) as `time`,
@@ -2069,62 +2154,91 @@
b.id,
(UNIX_TIMESTAMP(b.end_time) - UNIX_TIMESTAMP(b.start_time)) as time,
sum(a.charging_capacity) as total,
- sum(a.period_electric_price) as electronicMoney,
+ sum(a.period_electric_price) as electronicMoney,
sum(CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END) as serviceMoney,
sum(a.period_electric_price + (CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END)) as income
from `charging_pile_order`.t_charging_order_accounting_strategy a
left join `charging_pile_order`.t_charging_order b on (a.charging_order_id = b.id)
- where b.del_flag = 0 and b.recharge_payment_status = 2 and b.start_time IS NOT NULL and b.end_time is not null
- <if test="null != req.code and req.code!=''">
- and b.code LIKE CONCAT('%',#{req.code},'%')
- </if>
- <if test="null != req.userIds and req.userIds.size()>0">
- and b.app_user_id in
- <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
- #{item}
- </foreach>
- </if>
- <if test="null != req.siteIds and req.siteIds.size()>0">
- and b.site_id in
- <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
- #{item}
- </foreach>
- </if>
- <if test="req.orderType != null ">
- and b.order_type = #{req.orderType}
- </if>
- <if test="req.status != null ">
- and b.status = #{req.status}
- </if>
- <if test="req.orderSource != null and req.orderSource == 1 ">
- and (b.order_source = 0 or b.order_source = 1 )
- </if>
- <if test="req.orderSource != null and req.orderSource == 2 ">
- and b.tripartite_platform_name = 'KuaiDian'
- </if>
- <if test="req.orderSource != null and req.orderSource == 3 ">
- and b.tripartite_platform_name = 'XinDianTu'
- </if>
- <if test="req.siteId != null ">
- and b.site_id = #{req.siteId}
- </if>
- <if test="req.pileId != null ">
- and b.charging_pile_id = #{req.pileId}
- </if>
- <if test="req.gunId != null ">
- and b.charging_gun_id = #{req.gunId}
- </if>
- <if test="startTime1 != null and startTime1!=''">
- and (b.start_time between #{startTime1} and #{startTime2})
- </if>
- <if test="endTime1 != null and endTime1!=''">
- and (b.end_time between #{endTime1} and #{endTime2})
- </if>
+ <include refid="ChargingOrderSummaryWhere"/>
group by b.id,time
) as aa
</select>
+ <select id="chargingOrderFundSummary" resultType="map">
+ select
+ sum(CASE WHEN aa.recharge_payment_type = 1 and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as wechatIncome,
+ sum(CASE WHEN aa.recharge_payment_type in (2, 3) and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as alipayIncome,
+ 0 as balanceIncome,
+ 0 as platformIncomeTotal,
+ 0 as partnerIncomeTotal,
+ 0 as whitelistChargingIncome,
+ 0 as whitelistRefund
+ from (
+ select
+ b.id,
+ b.recharge_payment_type,
+ IFNULL(b.third_pay_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.payment_amount, IFNULL(b.recharge_amount, 0)) ELSE 0 END) - IFNULL(b.third_refund_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.refund_amount, 0) ELSE 0 END) as thirdNetAmount
+ from `charging_pile_order`.t_charging_order b
+ <include refid="ChargingOrderSummaryWhere"/>
+ ) as aa
+ </select>
+ <select id="chargingOrderSummaryOrderIds" resultType="java.lang.Long">
+ select b.id
+ from `charging_pile_order`.t_charging_order b
+ <include refid="ChargingOrderSummaryWhere"/>
+ </select>
+
+ <select id="exchangeCodeBalanceSummary" resultType="map">
+ select
+ sum(CASE WHEN change_type = 2 THEN IFNULL(used_amount, 0) WHEN change_type = 3 THEN -IFNULL(used_amount, 0) ELSE 0 END) as balanceIncome,
+ sum(CASE WHEN change_type = 2 THEN IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -IFNULL(gift_used_amount, 0) ELSE 0 END) as balanceGiftIncome
+ from `charging_pile_other`.t_exchange_code_use_record
+ where del_flag = 0 and change_type in (2, 3)
+ <if test="orderIds != null and orderIds.size()>0">
+ and order_id in
+ <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ </select>
+
+ <select id="exchangeCodeBalanceIncomeByOrderIds" resultType="map">
+ select
+ order_id as orderId,
+ sum(CASE WHEN change_type = 2 THEN IFNULL(used_amount, 0) WHEN change_type = 3 THEN -IFNULL(used_amount, 0) ELSE 0 END) as balanceIncome,
+ sum(CASE WHEN change_type = 2 THEN IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -IFNULL(gift_used_amount, 0) ELSE 0 END) as balanceGiftIncome
+ from `charging_pile_other`.t_exchange_code_use_record
+ where del_flag = 0 and order_id is not null and order_id != 0 and change_type in (2, 3)
+ <if test="orderIds != null and orderIds.size()>0">
+ and order_id in
+ <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ group by order_id
+ </select>
+
+ <select id="exchangeCodeBalanceIncomeDetail" resultType="com.ruoyi.order.api.vo.ChargingOrderBalanceIncomeDetailVO">
+ select
+ p.id as packageId,
+ p.package_name as packageName,
+ sum(CASE WHEN r.change_type = 2 THEN IFNULL(r.used_amount, 0) WHEN r.change_type = 3 THEN -IFNULL(r.used_amount, 0) ELSE 0 END) as balanceIncome,
+ sum(CASE WHEN r.change_type = 2 THEN IFNULL(r.gift_used_amount, 0) WHEN r.change_type = 3 THEN -IFNULL(r.gift_used_amount, 0) ELSE 0 END) as giftIncome
+ from `charging_pile_other`.t_exchange_code_use_record r
+ left join `charging_pile_other`.t_exchange_code_detail d on r.detail_id = d.id
+ left join `charging_pile_other`.t_exchange_code_package p on d.package_id = p.id
+ where r.del_flag = 0 and r.change_type in (2, 3)
+ <if test="orderIds != null and orderIds.size()>0">
+ and r.order_id in
+ <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+ group by p.id, p.package_name
+ having balanceIncome != 0 or giftIncome != 0
+ order by p.id desc
+ </select>
<select id="countOrdersByDate" resultType="com.ruoyi.order.vo.OrderCountByDate">
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
index 95f945d..53f27ff 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TExchangeCodePackageServiceImpl.java
@@ -496,7 +496,7 @@
entity.setRemark(dto.getRemark());
entity.setInventory(dto.getInventory());
entity.setUnlimitedReceiveLimit(dto.getUnlimitedReceiveLimit());
- entity.setReceiveLimit(Objects.equals(dto.getUnlimitedReceiveLimit(), 1) ? dto.getReceiveLimit() : null);
+ entity.setReceiveLimit(Objects.equals(dto.getUnlimitedReceiveLimit(), 1) ? null : dto.getReceiveLimit());
entity.setFinanceReceivedAmount(defaultMoney(dto.getFinanceReceivedAmount()));
entity.setGiftAmount(defaultMoney(dto.getGiftAmount()));
entity.setTotalAmount(defaultMoney(dto.getTotalAmount()));
@@ -515,7 +515,7 @@
if (dto.getExpireTime() != null && dto.getExpireTime().isBefore(LocalDateTime.now())) {
throw new ServiceException("截止领取时间不能早于当前时间");
}
- if (Objects.equals(dto.getUnlimitedReceiveLimit(), 1)
+ if (!Objects.equals(dto.getUnlimitedReceiveLimit(), 1)
&& (dto.getReceiveLimit() == null || dto.getReceiveLimit() <= 0)) {
throw new ServiceException("请输入领取限制次数");
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ExchangeCodeDetailExportVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ExchangeCodeDetailExportVO.java
index 062c7dc..e1e23f7 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ExchangeCodeDetailExportVO.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ExchangeCodeDetailExportVO.java
@@ -6,7 +6,6 @@
import java.io.Serializable;
import java.math.BigDecimal;
-import java.time.LocalDateTime;
@Data
@ApiModel("兑换码导出VO")
@@ -18,24 +17,12 @@
@Excel(name = "密码", width = 20)
private String password;
- @Excel(name = "金额", width = 20)
+ @Excel(name = "金额(元)", width = 20)
private BigDecimal amount;
- @Excel(name = "数量", width = 15)
- private Integer quantity;
-
- @Excel(name = "状态", replace = {"未绑定_1", "已绑定_2", "已失效_3"}, width = 20)
+ @Excel(name = "绑定状态", replace = {"未绑定_1", "已绑定_2", "已失效_3"}, width = 20)
private Integer status;
- @Excel(name = "绑定手机号", width = 20)
+ @Excel(name = "绑定用户", width = 20)
private String bindPhone;
-
- @Excel(name = "绑定时间", exportFormat = "yyyy-MM-dd HH:mm:ss", width = 25)
- private LocalDateTime bindTime;
-
- @Excel(name = "失效时间", exportFormat = "yyyy-MM-dd HH:mm:ss", width = 25)
- private LocalDateTime invalidTime;
-
- @Excel(name = "失效原因", width = 25)
- private String invalidReason;
}
--
Gitblit v1.7.1