From af3432fd7b5734ba4199f15b942bb7b060205b84 Mon Sep 17 00:00:00 2001 From: gaowdong Date: Fri, 30 May 2025 13:48:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccountReportController.java | 86 ++++ .../controller/TradeReportController.java | 83 ++++ .../domain/CanteenStallRevenueParam.java | 25 ++ .../report/domain/CanteenStallRevenueVO.java | 28 ++ .../report/domain/DeptIncomeOutcomeParam.java | 26 ++ .../report/domain/DeptIncomeOutcomeVO.java | 19 + .../report/domain/DeviceRevenueParam.java | 26 ++ .../core/report/domain/DeviceRevenueVO.java | 28 ++ .../core/report/domain/GoodsRevenueParam.java | 28 ++ .../core/report/domain/GoodsRevenueVO.java | 25 ++ .../report/domain/OperatingRevenueParam.java | 25 ++ .../report/domain/OperatingRevenueVO.java | 17 + .../report/domain/RechargeRecordParam.java | 24 ++ .../core/report/domain/RechargeRecordVO.java | 20 + .../core/report/domain/TradeFlowParam.java | 26 ++ .../core/report/domain/TradeFlowVO.java | 27 ++ .../report/domain/UserIncomeOutcomeParam.java | 27 ++ .../report/domain/UserIncomeOutcomeVO.java | 21 + .../core/report/domain/UserRevenueParam.java | 26 ++ .../core/report/domain/UserRevenueVO.java | 28 ++ .../report/domain/WithdrawRecordParam.java | 25 ++ .../core/report/domain/WithdrawRecordVO.java | 16 + .../core/report/mapper/AccReportMapper.java | 14 + .../core/report/mapper/TradeReportMapper.java | 17 + .../core/report/service/AccReportService.java | 16 + .../report/service/TradeReportService.java | 14 + .../service/impl/AccReportServiceImpl.java | 59 +++ .../service/impl/TradeReportServiceImpl.java | 54 +++ .../mapper/report/AccReportMapper.xml | 254 +++++++++++ .../mapper/report/TradeReportMapper.xml | 395 ++++++++++++++++++ 30 files changed, 1479 insertions(+) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccountReportController.java 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/CanteenStallRevenueParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.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/domain/UserIncomeOutcomeParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.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/AccReportService.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/AccReportServiceImpl.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/AccReportMapper.xml 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/report/controller/AccountReportController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccountReportController.java new file mode 100644 index 0000000..29aae83 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccountReportController.java @@ -0,0 +1,86 @@ +package com.bonus.canteen.core.report.controller; + +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.service.AccReportService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.page.TableDataInfo; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 交易报表 + * + * @author ruoyi + * @date 2025-04-14 + */ +@Controller +@RequestMapping("/report/acc") +public class AccountReportController extends BaseController +{ + @Autowired + private AccReportService accReportService; + + @ApiOperation("查询交易流水") + @PostMapping("/balance") + @ResponseBody + public TableDataInfo balanceList(@RequestBody AccountInfoQueryParam accountInfoQueryParam) + { + startPage(); + List list = accReportService.balanceList(accountInfoQueryParam); + return getDataTable(list); + } + +// @ApiOperation("账户余额汇总") +// @PostMapping({"/balance/sum"}) +// public AjaxResult queryAccInfoBalanceSum(@RequestBody AccountInfoQueryParam accountInfoQueryParam) { +// return AjaxResult.success(this.accReportService.balanceListSum(accountInfoQueryParam)); +// } + @ApiOperation("充值方式汇总") + @PostMapping("/recharge") + @ResponseBody + public TableDataInfo rechargeCount(@RequestBody RechargeRecordParam param) + { + startPage(); + List list = accReportService.rechargeCount(param); + return getDataTable(list); + } + + @ApiOperation("取款汇总") + @PostMapping("/withdraw") + @ResponseBody + public TableDataInfo withdrawCount(@RequestBody WithdrawRecordParam param) + { + startPage(); + List list = accReportService.selectWithdrawRecord(param); + return getDataTable(list); + } + + @ApiOperation("组织收支汇总") + @PostMapping("/dept/income-outcome") + @ResponseBody + public TableDataInfo deptIncomeOutcome(@RequestBody DeptIncomeOutcomeParam param) + { + startPage(); + List list = accReportService.selectDeptIncomeOutcome(param); + return getDataTable(list); + } + + @ApiOperation("个人收支汇总") + @PostMapping("/user/income-outcome") + @ResponseBody + public TableDataInfo userIncomeOutcome(@RequestBody UserIncomeOutcomeParam param) + { + startPage(); + List list = accReportService.selectUserIncomeOutcome(param); + return getDataTable(list); + } +} 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..aafc34e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/TradeReportController.java @@ -0,0 +1,83 @@ +package com.bonus.canteen.core.report.controller; + +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.service.TradeReportService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.page.TableDataInfo; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 交易报表 + * + * @author ruoyi + * @date 2025-04-14 + */ +@Controller +@RequestMapping("/report/trade") +public class TradeReportController extends BaseController +{ + @Autowired + private TradeReportService tradeReportService; + @ApiOperation("交易流水") + @PostMapping("/flow") + @ResponseBody + public TableDataInfo tradeFlowList(@RequestBody TradeFlowParam param) + { + startPage(); + List list = tradeReportService.selectTradeFlow(param); + return getDataTable(list); + } + @ApiOperation("营业汇总") + @PostMapping("/revenue/operating") + @ResponseBody + public TableDataInfo selectOperatingRevenue(@RequestBody OperatingRevenueParam param) + { + startPage(); + List list = tradeReportService.selectOperatingRevenue(param); + return getDataTable(list); + } + @ApiOperation("食堂档口汇总") + @PostMapping("/revenue/canteen") + @ResponseBody + public TableDataInfo selectCanteenStallRevenue(@RequestBody CanteenStallRevenueParam param) + { + startPage(); + List list = tradeReportService.selectCanteenStallRevenue(param); + return getDataTable(list); + } + @ApiOperation("设备汇总") + @PostMapping("/revenue/device") + @ResponseBody + public TableDataInfo selectDeviceRevenue(@RequestBody DeviceRevenueParam param) + { + startPage(); + List list = tradeReportService.selectDeviceRevenue(param); + return getDataTable(list); + } + @ApiOperation("个人消费汇总") + @PostMapping("/revenue/user") + @ResponseBody + public TableDataInfo selectUserRevenue(@RequestBody UserRevenueParam param) + { + startPage(); + List list = tradeReportService.selectUserRevenue(param); + return getDataTable(list); + } + @ApiOperation("菜品销售汇总") + @PostMapping("/revenue/goods") + @ResponseBody + public TableDataInfo selectGoodsRevenue(@RequestBody GoodsRevenueParam param) + { + startPage(); + List list = tradeReportService.selectGoodsRevenue(param); + return getDataTable(list); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueParam.java new file mode 100644 index 0000000..9e78906 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueParam.java @@ -0,0 +1,25 @@ +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 CanteenStallRevenueParam implements Serializable { + 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 CanteenStallRevenueParam() { + 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/CanteenStallRevenueVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueVO.java new file mode 100644 index 0000000..c1aaf1a --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/CanteenStallRevenueVO.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class CanteenStallRevenueVO implements Serializable { + private Long canteenId; + private Long stallId; + private String canteenAndStallName; + private int breakfastUserCount; + private int breakfastOrderCount; + private BigDecimal breakfastConsumeCount; + private int lunchUserCount; + private int lunchOrderCount; + private BigDecimal lunchConsumeCount; + private int afternoonTeaUserCount; + private int afternoonTeaOrderCount; + private BigDecimal afternoonTeaConsumeCount; + private int dinnerUserCount; + private int dinnerOrderCount; + private BigDecimal dinnerConsumeCount; + private int midnightSnackUserCount; + private int midnightSnackOrderCount; + private BigDecimal midnightSnackConsumeCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java new file mode 100644 index 0000000..dea7da5 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java @@ -0,0 +1,26 @@ +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.time.LocalTime; +import java.util.List; + +@Data +public class DeptIncomeOutcomeParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private List deptIdList; + + public DeptIncomeOutcomeParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java new file mode 100644 index 0000000..db7c6c2 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java @@ -0,0 +1,19 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class DeptIncomeOutcomeVO implements Serializable { + private Long deptId; + private String deptName; + private String deptFullName; + private BigDecimal walletBal; + private BigDecimal income; + private BigDecimal outcome; + private BigDecimal lastWalletBal; + private BigDecimal otherIncome; + private BigDecimal otherOutcome; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueParam.java new file mode 100644 index 0000000..d22f7a6 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueParam.java @@ -0,0 +1,26 @@ +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 DeviceRevenueParam implements Serializable { + 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; + private String searchValue; + + public DeviceRevenueParam() { + 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/DeviceRevenueVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueVO.java new file mode 100644 index 0000000..3389726 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeviceRevenueVO.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class DeviceRevenueVO implements Serializable { + private String deviceNumber; + private String deviceSn; + private String deviceName; + private int breakfastUserCount; + private int breakfastOrderCount; + private BigDecimal breakfastConsumeCount; + private int lunchUserCount; + private int lunchOrderCount; + private BigDecimal lunchConsumeCount; + private int afternoonTeaUserCount; + private int afternoonTeaOrderCount; + private BigDecimal afternoonTeaConsumeCount; + private int dinnerUserCount; + private int dinnerOrderCount; + private BigDecimal dinnerConsumeCount; + private int midnightSnackUserCount; + private int midnightSnackOrderCount; + private BigDecimal midnightSnackConsumeCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueParam.java new file mode 100644 index 0000000..e8f32af --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueParam.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 GoodsRevenueParam implements Serializable { + private List orderDetailTypeList; + // 1:食堂 2:档口 +// private Integer countType; + 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 GoodsRevenueParam() { + 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/GoodsRevenueVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueVO.java new file mode 100644 index 0000000..286913b --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/GoodsRevenueVO.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class GoodsRevenueVO implements Serializable { + private Long goodsId; + private String goodsName; + private BigDecimal salePrice; + private int breakfastQuantityCount; + private BigDecimal breakfastConsumeCount; + private int lunchQuantityCount; + private BigDecimal lunchConsumeCount; + private int afternoonTeaQuantityCount; + private BigDecimal afternoonTeaConsumeCount; + private int dinnerQuantityCount; + private BigDecimal dinnerConsumeCount; + private int midnightSnackQuantityCount; + private BigDecimal midnightSnackConsumeCount; + private int otherQuantityCount; + private BigDecimal otherConsumeCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueParam.java new file mode 100644 index 0000000..1241940 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueParam.java @@ -0,0 +1,25 @@ +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 OperatingRevenueParam implements Serializable { + 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 OperatingRevenueParam() { + 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/OperatingRevenueVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueVO.java new file mode 100644 index 0000000..da548bb --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/OperatingRevenueVO.java @@ -0,0 +1,17 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class OperatingRevenueVO implements Serializable { + private int userCount; + private int orderCount; + private BigDecimal payableAmount; + private BigDecimal discountsAmount; + private BigDecimal realAmount; + private BigDecimal personalWalletCount; + private BigDecimal subWalletCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java new file mode 100644 index 0000000..9c16fe8 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java @@ -0,0 +1,24 @@ +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.time.LocalTime; + +@Data +public class RechargeRecordParam implements Serializable { + @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 RechargeRecordParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java new file mode 100644 index 0000000..b8266df --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java @@ -0,0 +1,20 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class RechargeRecordVO implements Serializable { + private String statisticDate; + @JsonIgnore + private Long rechargeNum; + @JsonIgnore + private Long subNum; + private BigDecimal cashRechargeAmount; + @JsonIgnore + private BigDecimal aliRechargeAmount; + private BigDecimal subRechargeAmount; +} 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..e99701a --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowParam.java @@ -0,0 +1,26 @@ +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 String searchValue; + 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..d0f1b5a --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java @@ -0,0 +1,27 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +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 String deptFullName; + private BigDecimal accountAllBal; + private LocalDateTime tradeTime; + private Integer tradeType; + private Integer payType; + private String machineSn; + private String deviceName; + private String createBy; + private BigDecimal income; + private BigDecimal outcome; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java new file mode 100644 index 0000000..129b870 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java @@ -0,0 +1,27 @@ +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.time.LocalTime; +import java.util.List; + +@Data +public class UserIncomeOutcomeParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private List deptIdList; + private String searchValue; + + public UserIncomeOutcomeParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java new file mode 100644 index 0000000..d6b5e83 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java @@ -0,0 +1,21 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class UserIncomeOutcomeVO implements Serializable { + private Long userId; + private String phonenumber; + private Long deptId; + private String deptName; + private String deptFullName; + private String nickName; + private BigDecimal walletBal; + private BigDecimal walletBalNow; + private BigDecimal income; + private BigDecimal outcome; + private BigDecimal lastWalletBal; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueParam.java new file mode 100644 index 0000000..724e1f2 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueParam.java @@ -0,0 +1,26 @@ +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 UserRevenueParam implements Serializable { + private String searchValue; + 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 UserRevenueParam() { + 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/UserRevenueVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueVO.java new file mode 100644 index 0000000..85851d2 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserRevenueVO.java @@ -0,0 +1,28 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class UserRevenueVO implements Serializable { + private Long userId; + private String nickName; + private String deptFullName; + private int breakfastUserCount; + private int breakfastOrderCount; + private BigDecimal breakfastConsumeCount; + private int lunchUserCount; + private int lunchOrderCount; + private BigDecimal lunchConsumeCount; + private int afternoonTeaUserCount; + private int afternoonTeaOrderCount; + private BigDecimal afternoonTeaConsumeCount; + private int dinnerUserCount; + private int dinnerOrderCount; + private BigDecimal dinnerConsumeCount; + private int midnightSnackUserCount; + private int midnightSnackOrderCount; + private BigDecimal midnightSnackConsumeCount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java new file mode 100644 index 0000000..1199d90 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java @@ -0,0 +1,25 @@ +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.time.LocalTime; + +@Data +public class WithdrawRecordParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private String searchValue; + + public WithdrawRecordParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java new file mode 100644 index 0000000..994daea --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java @@ -0,0 +1,16 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WithdrawRecordVO implements Serializable { + private Long userId; + private String nickName; + private Long deptId; + private String deptName; + private String deptFullName; + private int withdrawNum; + private double withdrawAmount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java new file mode 100644 index 0000000..8118660 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java @@ -0,0 +1,14 @@ +package com.bonus.canteen.core.report.mapper; + +import com.bonus.canteen.core.report.domain.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface AccReportMapper { + public List selectRechargeRecord(@Param("param") RechargeRecordParam param); + public List selectWithdrawRecord(@Param("param") WithdrawRecordParam param); + public List selectDeptIncomeOutcome(@Param("param") DeptIncomeOutcomeParam param); + public List selectUserIncomeOutcome(@Param("param") UserIncomeOutcomeParam param, + @Param("encryptedSearchValue") String encryptedSearchValue); +} 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..3ab5262 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java @@ -0,0 +1,17 @@ +package com.bonus.canteen.core.report.mapper; + +import com.bonus.canteen.core.report.domain.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface TradeReportMapper { + public List selectTradeFlow(@Param("param")TradeFlowParam param, + @Param("encryptedSearchValue") String encryptedSearchValue); + public List selectOperatingRevenue(@Param("param") OperatingRevenueParam param); + public List selectCanteenStallRevenue(@Param("param")CanteenStallRevenueParam param); + public List selectDeviceRevenue(@Param("param")DeviceRevenueParam param); + public List selectUserRevenue(@Param("param")UserRevenueParam param, + @Param("encryptedSearchValue") String encryptedSearchValue); + public List selectGoodsRevenue(@Param("param")GoodsRevenueParam param); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java new file mode 100644 index 0000000..3eb3c6f --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java @@ -0,0 +1,16 @@ +package com.bonus.canteen.core.report.service; + +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.report.domain.*; + +import java.util.List; + +public interface AccReportService { + List balanceList(AccountInfoQueryParam accountInfoQueryParam); + AccInfoDetailsVO balanceListSum(AccountInfoQueryParam accountInfoQueryParam); + List rechargeCount(RechargeRecordParam param); + List selectWithdrawRecord(WithdrawRecordParam param); + List selectDeptIncomeOutcome(DeptIncomeOutcomeParam param); + List selectUserIncomeOutcome(UserIncomeOutcomeParam 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..0898897 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/TradeReportService.java @@ -0,0 +1,14 @@ +package com.bonus.canteen.core.report.service; + +import com.bonus.canteen.core.report.domain.*; + +import java.util.List; + +public interface TradeReportService { + List selectTradeFlow(TradeFlowParam param); + List selectOperatingRevenue(OperatingRevenueParam param); + List selectCanteenStallRevenue(CanteenStallRevenueParam param); + List selectDeviceRevenue(DeviceRevenueParam param); + List selectUserRevenue(UserRevenueParam param); + List selectGoodsRevenue(GoodsRevenueParam param); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java new file mode 100644 index 0000000..00ad957 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java @@ -0,0 +1,59 @@ +package com.bonus.canteen.core.report.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.service.IAccInfoService; +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.mapper.AccReportMapper; +import com.bonus.canteen.core.report.service.AccReportService; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class AccReportServiceImpl implements AccReportService { + @Resource + AccReportMapper accReportMapper; + @Autowired + IAccInfoService accInfoService; + + @Override + public List balanceList(AccountInfoQueryParam accountInfoQueryParam) { + return accInfoService.selectAccInfoList(accountInfoQueryParam); + } + + @Override + public AccInfoDetailsVO balanceListSum(AccountInfoQueryParam accountInfoQueryParam) { + return accInfoService.queryAccInfoBalanceSum(accountInfoQueryParam); + } + + @Override + public List rechargeCount(RechargeRecordParam param) { + return accReportMapper.selectRechargeRecord(param); + } + @Override + public List selectWithdrawRecord(WithdrawRecordParam param) { + return accReportMapper.selectWithdrawRecord(param); + } + + @Override + public List selectDeptIncomeOutcome(DeptIncomeOutcomeParam param) { + return accReportMapper.selectDeptIncomeOutcome(param); + } + + @Override + public List selectUserIncomeOutcome(UserIncomeOutcomeParam param) { + String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); + List list = accReportMapper.selectUserIncomeOutcome(param, encryptedSearchValue); + if(CollUtil.isNotEmpty(list)) { + for (UserIncomeOutcomeVO userIncomeOutcomeVO : list) { + userIncomeOutcomeVO.setPhonenumber(SM4EncryptUtils.sm4Decrypt(userIncomeOutcomeVO.getPhonenumber())); + } + } + return list; + } +} 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..7dd39db --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/TradeReportServiceImpl.java @@ -0,0 +1,54 @@ +package com.bonus.canteen.core.report.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.mapper.TradeReportMapper; +import com.bonus.canteen.core.report.service.TradeReportService; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +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) { + String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); + List tradeFlowVOList = tradeReportMapper.selectTradeFlow(param, encryptedSearchValue); + if(CollUtil.isNotEmpty(tradeFlowVOList)) { + for(TradeFlowVO vo : tradeFlowVOList) { + vo.setPhonenumber(SM4EncryptUtils.sm4Decrypt(vo.getPhonenumber())); + } + } + return tradeFlowVOList; + } + + @Override + public List selectOperatingRevenue(OperatingRevenueParam param) { + return tradeReportMapper.selectOperatingRevenue(param); + } + + @Override + public List selectCanteenStallRevenue(CanteenStallRevenueParam param) { + return tradeReportMapper.selectCanteenStallRevenue(param); + } + + @Override + public List selectDeviceRevenue(DeviceRevenueParam param) { + return tradeReportMapper.selectDeviceRevenue(param); + } + + @Override + public List selectUserRevenue(UserRevenueParam param) { + return tradeReportMapper.selectUserRevenue(param, SM4EncryptUtils.sm4Encrypt(param.getSearchValue())); + } + + @Override + public List selectGoodsRevenue(GoodsRevenueParam param) { + return tradeReportMapper.selectGoodsRevenue(param); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml new file mode 100644 index 0000000..8aac765 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml @@ -0,0 +1,254 @@ + + + + + + + + + + + \ No newline at end of file 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..307a8a6 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + \ No newline at end of file