diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index f8502d85d..1d5e535c6 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -423,7 +423,7 @@ public class OrderService { vo.setPayRecordList(payRecords); // 查询退款明细 - List orderRefundInfoList = getOrderRefundInfoList(orderBasicInfo); + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); vo.setOrderRefundInfoList(orderRefundInfoList); // 查订单明细 @@ -467,25 +467,6 @@ public class OrderService { return vo; } - /** - * 通过orderCode获取退款明细列表 - * @param orderCode - * @return - */ - private List getOrderRefundInfoList(String orderCode) { - - return null; - } - - /** - * 获取退款明细列表 - * @param orderBasicInfo - * @return - */ - private List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { - return orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); - } - /** * 微信支付退款回调 * @@ -693,13 +674,6 @@ public class OrderService { List merchantDeptIds = authorizedMap.getMerchantDeptIds(); } - // 查询订单退款记录,如存在退款说明已经结算过,不能再次结算 - // List orderRefundInfoList = getOrderRefundInfoList(orderBasicInfo); - // if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { - // log.info("订单:{}, 已经存在退款记录:{}, 不能再次结算", orderBasicInfo.getOrderCode(), JSON.toJSONString(orderRefundInfoList)); - // return false; - // } - // 充电金额 String chargingAmount = dto.getChargingAmount(); // 充电度数 @@ -714,6 +688,18 @@ public class OrderService { } } + // 查询订单退款记录,如存在退款说明已经结算过,不能再次结算 + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); + if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { + // 已退款金额 + BigDecimal refunded = orderRefundInfoList.stream() + .map(x -> new BigDecimal(x.getReverseAmt())) + .reduce(BigDecimal.ZERO,BigDecimal::add); + chargingAmount = orderBasicInfo.getPayAmount().subtract(refunded).toString(); + log.info("订单:{}, 已经存在退款记录:{}, 支付金额{}, 退款金额:{}, 重新计算消费金额为:{}", + orderBasicInfo.getOrderCode(), JSON.toJSONString(orderRefundInfoList), orderBasicInfo.getPayAmount(), refunded, chargingAmount); + } + // 组装交易记录数据 TransactionRecordsData data = new TransactionRecordsData(); data.setConsumptionAmount(chargingAmount); // 总消费金额 diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java index 8c860e2b4..b7a31e92a 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/TransactionRecordsRequestHandler.java @@ -616,7 +616,6 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { // 结算订单操作 try { - // orderBasicInfoService.settleOrder(data, orderBasicInfo); // 新逻辑 String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId()); AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 529537427..031bffd92 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -429,11 +429,9 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); if (CollectionUtils.isNotEmpty(orderRefundInfoList)) { // 已退款金额 - BigDecimal refunded = BigDecimal.ZERO; - for (OrderDetailInfoVO.OrderRefundInfo orderRefundInfo : orderRefundInfoList) { - BigDecimal reverseAmt = new BigDecimal(orderRefundInfo.getReverseAmt()); - refunded = refunded.add(reverseAmt); - } + BigDecimal refunded = orderRefundInfoList.stream() + .map(x -> new BigDecimal(x.getReverseAmt())) + .reduce(BigDecimal.ZERO,BigDecimal::add); if (refunded.compareTo(refundAmount) >= 0) { logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, refunded); return;