From 7ec208c6d98f5a4a07eed1072fd5a2f8b14cf3a7 Mon Sep 17 00:00:00 2001 From: gaowdong Date: Mon, 21 Apr 2025 16:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8-=E4=BA=A4=E6=98=93=E6=B5=81?= =?UTF-8?q?=E6=B0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/account/domain/WalletUpdateDTO.java | 1 + .../domain/bo/WalletBalanceOperation.java | 1 + .../impl/AccWalletInfoServiceImpl.java | 13 +++-- .../service/impl/OrderInfoServiceImpl.java | 17 ++++-- .../controller/TradeReportController.java | 46 ++++++++++++++++ .../core/report/domain/TradeFlowParam.java | 28 ++++++++++ .../core/report/domain/TradeFlowVO.java | 25 +++++++++ .../core/report/mapper/TradeReportMapper.java | 10 ++++ .../report/service/TradeReportService.java | 10 ++++ .../service/impl/TradeReportServiceImpl.java | 21 ++++++++ .../mapper/report/TradeReportMapper.xml | 54 +++++++++++++++++++ 11 files changed, 218 insertions(+), 8 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/TradeReportController.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/TradeReportService.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/TradeReportServiceImpl.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletUpdateDTO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletUpdateDTO.java index 1ff98f1..e208559 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletUpdateDTO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletUpdateDTO.java @@ -16,4 +16,5 @@ public class WalletUpdateDTO { private PayChannelEnum payChannelEnum; private PayTypeEnum payTypeEnum; private Long orderNo; + private String deviceSn; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/WalletBalanceOperation.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/WalletBalanceOperation.java index eb97568..f4238d3 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/WalletBalanceOperation.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/bo/WalletBalanceOperation.java @@ -14,4 +14,5 @@ public class WalletBalanceOperation { private Integer payChannel; private Integer payType; private Long orderNo; + private String deviceSn; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java index 96b069e..1aa8941 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java @@ -193,7 +193,8 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { walletUpdateDTO.getAccWalletIdEnum().getKey(), walletUpdateDTO.getAccTradeTypeEnum().getKey(), walletUpdateDTO.getPayChannelEnum().getKey(), - walletUpdateDTO.getPayTypeEnum().getKey()); + walletUpdateDTO.getPayTypeEnum().getKey(), + walletUpdateDTO.getDeviceSn()); operation.setOperationType(WalletBalanceOperationEnum.ADD_BAL.getKey()); operation.setOrderNo(walletUpdateDTO.getOrderNo()); acWalletBalanceOperation(operation); @@ -219,7 +220,8 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { walletUpdateDTO.getAccWalletIdEnum().getKey(), walletUpdateDTO.getAccTradeTypeEnum().getKey(), walletUpdateDTO.getPayChannelEnum().getKey(), - walletUpdateDTO.getPayTypeEnum().getKey()); + walletUpdateDTO.getPayTypeEnum().getKey(), + walletUpdateDTO.getDeviceSn()); operation.setOperationType(WalletBalanceOperationEnum.REDUCE_BAL.getKey()); operation.setOrderNo(walletUpdateDTO.getOrderNo()); acWalletBalanceOperation(operation); @@ -230,7 +232,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { } private WalletBalanceOperation operationBuilder(BigDecimal amount, Long userId, Integer walletId, - Integer tradeType, Integer payChannel, Integer payType) { + Integer tradeType, Integer payChannel, Integer payType, String deviceSn) { WalletBalanceOperation operation = new WalletBalanceOperation(); operation.setUserId(userId); operation.setAmount(amount); @@ -238,6 +240,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { operation.setTradeType(tradeType); operation.setPayChannel(payChannel); operation.setPayType(payType); + operation.setDeviceSn(deviceSn); return operation; } @@ -282,6 +285,9 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { accTrade.setPayState(PayStateEnum.PAY_SUCC.getKey()); accTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey()); accTrade.setUpdateBy(SecurityUtils.getUsername()); + accTrade.setWalletBalTotal(walletBalByWalletId); + accTrade.setAccAllBal(walletBalByWalletId); + accTrade.setMachineSn(operation.getDeviceSn()); this.accTradeService.updateAccTrade(accTrade); }catch (Exception ex) { if(Objects.nonNull(tradeId)) { @@ -336,6 +342,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { if(Objects.nonNull(operation.getOrderNo())) { accTrade.setOrderNo(operation.getOrderNo().toString()); } + accTrade.setMachineSn(operation.getDeviceSn()); this.accTradeService.insertAccTrade(accTrade); return tradeId; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/service/impl/OrderInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/service/impl/OrderInfoServiceImpl.java index 0a7c5c4..5e01466 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/service/impl/OrderInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/service/impl/OrderInfoServiceImpl.java @@ -251,18 +251,23 @@ public class OrderInfoServiceImpl implements IOrderInfoService private void deductFromWallets(OrderInfo orderInfo, BigDecimal subsidyWalletBal) { Long orderNo = orderInfo.getOrderId(); + String deviceSn = orderInfo.getDeviceSn(); if (orderInfo.getRealAmount().compareTo(subsidyWalletBal) <= 0) { - deductWalletBalance(orderInfo.getRealAmount(), orderInfo.getUserId(), AccWalletIdEnum.SUBSIDY, orderNo); + deductWalletBalance(orderInfo.getRealAmount(), orderInfo.getUserId(), AccWalletIdEnum.SUBSIDY, orderNo, deviceSn); } else if (subsidyWalletBal.compareTo(BigDecimal.ZERO) > 0) { - deductWalletBalance(subsidyWalletBal, orderInfo.getUserId(), AccWalletIdEnum.SUBSIDY, orderNo); + deductWalletBalance(subsidyWalletBal, orderInfo.getUserId(), AccWalletIdEnum.SUBSIDY, orderNo, deviceSn); BigDecimal remainAmount = orderInfo.getRealAmount().subtract(subsidyWalletBal); - deductWalletBalance(remainAmount, orderInfo.getUserId(), AccWalletIdEnum.WALLET, orderNo); + deductWalletBalance(remainAmount, orderInfo.getUserId(), AccWalletIdEnum.WALLET, orderNo, deviceSn); } else { - deductWalletBalance(orderInfo.getRealAmount(), orderInfo.getUserId(), AccWalletIdEnum.WALLET, orderNo); + deductWalletBalance(orderInfo.getRealAmount(), orderInfo.getUserId(), AccWalletIdEnum.WALLET, orderNo, deviceSn); } } - private void deductWalletBalance(BigDecimal amount, Long userId, AccWalletIdEnum walletIdEnum, Long orderNo) { + private void deductWalletBalance(BigDecimal amount, + Long userId, + AccWalletIdEnum walletIdEnum, + Long orderNo, + String deviceSn) { WalletUpdateDTO walletUpdateDTO = new WalletUpdateDTO(); walletUpdateDTO.setAmount(amount); walletUpdateDTO.setUserId(userId); @@ -271,6 +276,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService walletUpdateDTO.setPayChannelEnum(PayChannelEnum.ACC); walletUpdateDTO.setPayTypeEnum(PayTypeEnum.MEAL_CARD); walletUpdateDTO.setOrderNo(orderNo); + walletUpdateDTO.setDeviceSn(deviceSn); accWalletInfoService.clearAccWalletBalance(walletUpdateDTO); } @@ -358,6 +364,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService walletUpdateDTO.setPayChannelEnum(PayChannelEnum.ACC); walletUpdateDTO.setPayTypeEnum(PayTypeEnum.MEAL_CARD); walletUpdateDTO.setOrderNo(orderId); + walletUpdateDTO.setDeviceSn(orderInfo.getDeviceSn()); accWalletInfoService.addAccWalletBalance(walletUpdateDTO); refundAmount = refundAmount.add(accTrade.getActualAmount()); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/TradeReportController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/TradeReportController.java new file mode 100644 index 0000000..e4f7333 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/TradeReportController.java @@ -0,0 +1,46 @@ +package com.bonus.canteen.core.report.controller; + +import com.bonus.canteen.core.order.domain.OrderDetail; +import com.bonus.canteen.core.order.service.IOrderDetailService; +import com.bonus.canteen.core.report.domain.TradeFlowParam; +import com.bonus.canteen.core.report.domain.TradeFlowVO; +import com.bonus.canteen.core.report.service.TradeReportService; +import com.bonus.common.core.utils.poi.ExcelUtil; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 交易报表 + * + * @author ruoyi + * @date 2025-04-14 + */ +@Controller +@RequestMapping("/report/trade") +public class TradeReportController extends BaseController +{ + @Autowired + private TradeReportService tradeReportService; + + /** + * 交易流水 + */ + @PostMapping("/flow") + @ResponseBody + public TableDataInfo list(TradeFlowParam param) + { + startPage(); + List list = tradeReportService.selectTradeFlow(param); + return getDataTable(list); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowParam.java new file mode 100644 index 0000000..e4c594e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowParam.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class TradeFlowParam implements Serializable { + private Long userId; + private String userName; + private String phonenumber; + private List deptIdList; + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + + public TradeFlowParam() { + this.endDateTime = LocalDateTime.now().plusDays(7); + this.startDateTime = LocalDateTime.now().minusDays(7); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java new file mode 100644 index 0000000..d6100bd --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +public class TradeFlowVO implements Serializable { + private Long userId; + private String userName; + private Integer userType; + private String phonenumber; + private Long deptId; + private String deptName; + private Double accAllBal; + private LocalDateTime tradeTime; + private Integer tradeType; + private Integer payType; + private String machineSn; + private String deviceName; + private String createBy; + private Double income; + private Double outcome; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java new file mode 100644 index 0000000..b010392 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java @@ -0,0 +1,10 @@ +package com.bonus.canteen.core.report.mapper; + +import com.bonus.canteen.core.report.domain.TradeFlowParam; +import com.bonus.canteen.core.report.domain.TradeFlowVO; + +import java.util.List; + +public interface TradeReportMapper { + public List selectTradeFlow(TradeFlowParam param); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/TradeReportService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/TradeReportService.java new file mode 100644 index 0000000..b7100e5 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/TradeReportService.java @@ -0,0 +1,10 @@ +package com.bonus.canteen.core.report.service; + +import com.bonus.canteen.core.report.domain.TradeFlowParam; +import com.bonus.canteen.core.report.domain.TradeFlowVO; + +import java.util.List; + +public interface TradeReportService { + List selectTradeFlow(TradeFlowParam param); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/TradeReportServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/TradeReportServiceImpl.java new file mode 100644 index 0000000..0aef475 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/TradeReportServiceImpl.java @@ -0,0 +1,21 @@ +package com.bonus.canteen.core.report.service.impl; + +import com.bonus.canteen.core.report.domain.TradeFlowParam; +import com.bonus.canteen.core.report.domain.TradeFlowVO; +import com.bonus.canteen.core.report.mapper.TradeReportMapper; +import com.bonus.canteen.core.report.service.TradeReportService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class TradeReportServiceImpl implements TradeReportService { + @Resource + TradeReportMapper tradeReportMapper; + + @Override + public List selectTradeFlow(TradeFlowParam param) { + return tradeReportMapper.selectTradeFlow(param); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml new file mode 100644 index 0000000..495b669 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file