From a56643250df070a9b1cdd77ce01d5d5b52aa0e51 Mon Sep 17 00:00:00 2001 From: qjq <1766193529@qq.com> Date: Wed, 6 Nov 2024 15:02:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=BB=9F=E8=AE=A111?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 2 + .../vo/OrderSpaceCapsuleStatisticsVo.java | 39 ++- ...StatisticsSpaceCapsuleOrderController.java | 97 ++++++++ .../StatisticsSpaceCapsuleOrderPageReqVO.java | 50 ++++ .../vo/StatisticsSpaceCapsuleOrderRespVO.java | 61 +++++ .../StatisticsSpaceCapsuleOrderSaveReqVO.java | 48 ++++ .../AppOrderSpaceCapsuleController.java | 13 +- .../StatisticsSpaceCapsuleOrderDO.java | 70 ++++++ .../OrderSpaceCapsuleMapper.java | 9 +- .../StatisticsSpaceCapsuleOrderMapper.java | 35 +++ .../job/StatisticsSpaceCapsuleOrderJob.java | 46 ++++ .../OrderSpaceCapsuleService.java | 9 - .../OrderSpaceCapsuleServiceImpl.java | 68 ------ .../StatisticsSpaceCapsuleOrderService.java | 58 +++++ ...tatisticsSpaceCapsuleOrderServiceImpl.java | 224 ++++++++++++++++++ .../OrderSpaceCapsuleMapper.xml | 29 +++ 16 files changed, 765 insertions(+), 93 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsSpaceCapsuleOrderJob.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderServiceImpl.java diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 64dd93aa..a14aadab 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -136,5 +136,7 @@ public interface ErrorCodeConstants { ErrorCode STORE_GOODS_INVENTORY_NOT_ENOUGH = new ErrorCode(1_004_019_001, "商品库存不足"); ErrorCode STORE_GOODS_INVENTORY_RECORD_NOT_EXISTS = new ErrorCode(1_004_020_001, "商品出入库记录不存在"); + + ErrorCode STATISTICS_SPACE_CAPSULE_ORDER_NOT_EXISTS = new ErrorCode(1_004_021_001, "太空舱订单营业额统计不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderspacecapsule/vo/OrderSpaceCapsuleStatisticsVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderspacecapsule/vo/OrderSpaceCapsuleStatisticsVo.java index 1838f759..3cdfeb20 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderspacecapsule/vo/OrderSpaceCapsuleStatisticsVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderspacecapsule/vo/OrderSpaceCapsuleStatisticsVo.java @@ -2,25 +2,38 @@ package cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + @Schema(description = "小程序 - 太空舱订单统计操作") @Data public class OrderSpaceCapsuleStatisticsVo { - @Schema(description = "营业额", example = "23511") + @Schema(description = "每日总金额") private BigDecimal totalMoney; - @Schema(description = "总时长", example = "23511") - private BigDecimal totalHour; - @Schema(description = "对比", example = "23511") - private BigDecimal compTotalMoney; - @Schema(description = "类型 是-/+", example = "23511") - private String compType; - @Schema(description = "总订单数", example = "23511") - private Integer totalOrderSum; - @Schema(description = "营业额对比") - private List compMoney; - @Schema(description = "使用时长对比") - private List compHour; + @Schema(description = "总订单") + private Integer totalOrder; + @Schema(description = "总分钟/分") + private BigDecimal totalMinute; + @Schema(description = "昨日") + private BigDecimal compMoney; + @Schema(description = "比较值") + private String type; + @Schema(description = "门店id", example = "22393") + private Long carteenId; + @Schema(description = "总退款金额") + private BigDecimal refundMoney; + @Schema(description = "总套餐数量") + private Integer totalPackageSum; + @Schema(description = "门店名称", example = "李四") + private String carteenName; + @Schema(description = "备注", example = "随便") + private String remark; + @Schema(description = "总顾客") + private Integer totalCustomer; + List lists; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderController.java new file mode 100644 index 00000000..332cc26e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderController.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder; + +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderRespVO; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO; +import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 太空舱订单营业额统计") +@RestController +@RequestMapping("/statistics-space-capsule-order") +@Validated +public class StatisticsSpaceCapsuleOrderController { + + @Resource + private StatisticsSpaceCapsuleOrderService statisticsSpaceCapsuleOrderService; + + @PostMapping("/create") + @Operation(summary = "创建太空舱订单营业额统计") + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:create')") + public CommonResult createStatisticsSpaceCapsuleOrder(@Valid @RequestBody StatisticsSpaceCapsuleOrderSaveReqVO createReqVO) { + return success(statisticsSpaceCapsuleOrderService.createStatisticsSpaceCapsuleOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新太空舱订单营业额统计") + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:update')") + public CommonResult updateStatisticsSpaceCapsuleOrder(@Valid @RequestBody StatisticsSpaceCapsuleOrderSaveReqVO updateReqVO) { + statisticsSpaceCapsuleOrderService.updateStatisticsSpaceCapsuleOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除太空舱订单营业额统计") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:delete')") + public CommonResult deleteStatisticsSpaceCapsuleOrder(@RequestParam("id") Long id) { + statisticsSpaceCapsuleOrderService.deleteStatisticsSpaceCapsuleOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得太空舱订单营业额统计") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:query')") + public CommonResult getStatisticsSpaceCapsuleOrder(@RequestParam("id") Long id) { + StatisticsSpaceCapsuleOrderDO statisticsSpaceCapsuleOrder = statisticsSpaceCapsuleOrderService.getStatisticsSpaceCapsuleOrder(id); + return success(BeanUtils.toBean(statisticsSpaceCapsuleOrder, StatisticsSpaceCapsuleOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得太空舱订单营业额统计分页") + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:query')") + public CommonResult> getStatisticsSpaceCapsuleOrderPage(@Valid StatisticsSpaceCapsuleOrderPageReqVO pageReqVO) { + PageResult pageResult = statisticsSpaceCapsuleOrderService.getStatisticsSpaceCapsuleOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StatisticsSpaceCapsuleOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出太空舱订单营业额统计 Excel") + @PreAuthorize("@ss.hasPermission('t:statistics-space-capsule-order:export')") + @OperateLog(type = EXPORT) + public void exportStatisticsSpaceCapsuleOrderExcel(@Valid StatisticsSpaceCapsuleOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = statisticsSpaceCapsuleOrderService.getStatisticsSpaceCapsuleOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "太空舱订单营业额统计.xls", "数据", StatisticsSpaceCapsuleOrderRespVO.class, + BeanUtils.toBean(list, StatisticsSpaceCapsuleOrderRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderPageReqVO.java new file mode 100644 index 00000000..0cce8f5d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderPageReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 太空舱订单营业额统计分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StatisticsSpaceCapsuleOrderPageReqVO extends PageParam { + + @Schema(description = "每日总金额") + private BigDecimal totalMoney; + + @Schema(description = "总订单") + private Integer totalOrder; + + @Schema(description = "总分钟/分") + private BigDecimal totalMinute; + + @Schema(description = "门店id", example = "22393") + private Long carteenId; + + @Schema(description = "总退款金额") + private BigDecimal refundMoney; + + @Schema(description = "总套餐数量") + private Integer totalPackageSum; + + @Schema(description = "门店名称", example = "李四") + private String carteenName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "总顾客") + private Integer totalCustomer; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderRespVO.java new file mode 100644 index 00000000..23ce0f37 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderRespVO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 太空舱订单营业额统计 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StatisticsSpaceCapsuleOrderRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "406") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "每日总金额", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("每日总金额") + private BigDecimal totalMoney; + + @Schema(description = "总订单", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("总订单") + private Integer totalOrder; + + @Schema(description = "总分钟/分", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("总分钟/分") + private BigDecimal totalMinute; + + @Schema(description = "门店id", example = "22393") + @ExcelProperty("门店id") + private Long carteenId; + + @Schema(description = "总退款金额", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("总退款金额") + private BigDecimal refundMoney; + + @Schema(description = "总套餐数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("总套餐数量") + private Integer totalPackageSum; + + @Schema(description = "门店名称", example = "李四") + @ExcelProperty("门店名称") + private String carteenName; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "总顾客") + @ExcelProperty("总顾客") + private Integer totalCustomer; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderSaveReqVO.java new file mode 100644 index 00000000..e257b2a8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/statisticsspacecapsuleorder/vo/StatisticsSpaceCapsuleOrderSaveReqVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 太空舱订单营业额统计新增/修改 Request VO") +@Data +public class StatisticsSpaceCapsuleOrderSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "406") + private Long id; + + @Schema(description = "每日总金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "每日总金额不能为空") + private BigDecimal totalMoney; + + @Schema(description = "总订单", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "总订单不能为空") + private Integer totalOrder; + + @Schema(description = "总分钟/分", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "总分钟/分不能为空") + private BigDecimal totalMinute; + + @Schema(description = "门店id", example = "22393") + private Long carteenId; + + @Schema(description = "总退款金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "总退款金额不能为空") + private BigDecimal refundMoney; + + @Schema(description = "总套餐数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "总套餐数量不能为空") + private Integer totalPackageSum; + + @Schema(description = "门店名称", example = "李四") + private String carteenName; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "总顾客") + private Integer totalCustomer; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderspacecapsule/AppOrderSpaceCapsuleController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderspacecapsule/AppOrderSpaceCapsuleController.java index 366d3aa8..5ccd82f6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderspacecapsule/AppOrderSpaceCapsuleController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderspacecapsule/AppOrderSpaceCapsuleController.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO; import cn.iocoder.yudao.module.member.service.orderspacecapsule.OrderSpaceCapsuleService; +import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -30,7 +31,8 @@ public class AppOrderSpaceCapsuleController { @Resource private OrderSpaceCapsuleService orderSpaceCapsuleService; - + @Resource + private StatisticsSpaceCapsuleOrderService capsuleOrderService; @PostMapping("/create") @Operation(summary = "创建太空舱订单") public CommonResult createOrderSpaceCapsule(@Valid @RequestBody OrderSpaceCapsuleSaveReqVO createReqVO) { @@ -78,11 +80,18 @@ public class AppOrderSpaceCapsuleController { OrderSpaceCapsuleDO orderSpaceCapsuleDO = orderSpaceCapsuleService.openCmdAdmin(adminVo); return success(BeanUtils.toBean(orderSpaceCapsuleDO, OrderSpaceCapsuleRespVO.class)); } - @GetMapping("/statistics") +/* @GetMapping("/statistics") @Operation(summary = "日报,月报") public CommonResult getStatistics(@RequestParam("carteenId") Long carTeenId, @RequestParam("startTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { return success(orderSpaceCapsuleService.getStatistics(carTeenId, startTime, endTime)); + }*/ + @GetMapping("/statistics") + @Operation(summary = "日报,月报") + public CommonResult getStatistics1(@RequestParam("carteenId") Long carTeenId, + @RequestParam("type")String type, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam Date date) { + return success(capsuleOrderService.compDayMon(carTeenId, type,date)); } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderDO.java new file mode 100644 index 00000000..f1e60e25 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderDO.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 太空舱订单营业额统计 DO + * + * @author 管理员 + */ +@TableName("t_statistics_space_capsule_order") +@KeySequence("t_statistics_space_capsule_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StatisticsSpaceCapsuleOrderDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 每日总金额 + */ + private BigDecimal totalMoney; + /** + * 总订单 + */ + private Integer totalOrder; + /** + * 总分钟/分 + */ + private BigDecimal totalMinute; + /** + * 门店id + */ + private Long carteenId; + /** + * 总退款金额 + */ + private BigDecimal refundMoney; + /** + * 总套餐数量 + */ + private Integer totalPackageSum; + /** + * 门店名称 + */ + private String carteenName; + /** + * 备注 + */ + private String remark; + /** + * 总顾客 + */ + private Integer totalCustomer; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderspacecapsule/OrderSpaceCapsuleMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderspacecapsule/OrderSpaceCapsuleMapper.java index 4adc71b6..b65846c8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderspacecapsule/OrderSpaceCapsuleMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderspacecapsule/OrderSpaceCapsuleMapper.java @@ -5,8 +5,14 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsulePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsComVo; +import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo; import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; /** * 太空舱订单 Mapper @@ -34,5 +40,6 @@ public interface OrderSpaceCapsuleMapper extends BaseMapperX { + + default PageResult selectPage(StatisticsSpaceCapsuleOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getTotalMoney, reqVO.getTotalMoney()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getTotalOrder, reqVO.getTotalOrder()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getTotalMinute, reqVO.getTotalMinute()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getCarteenId, reqVO.getCarteenId()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getRefundMoney, reqVO.getRefundMoney()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getTotalPackageSum, reqVO.getTotalPackageSum()) + .likeIfPresent(StatisticsSpaceCapsuleOrderDO::getCarteenName, reqVO.getCarteenName()) + .betweenIfPresent(StatisticsSpaceCapsuleOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getRemark, reqVO.getRemark()) + .eqIfPresent(StatisticsSpaceCapsuleOrderDO::getTotalCustomer, reqVO.getTotalCustomer()) + .orderByDesc(StatisticsSpaceCapsuleOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsSpaceCapsuleOrderJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsSpaceCapsuleOrderJob.java new file mode 100644 index 00000000..7c7d7393 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/StatisticsSpaceCapsuleOrderJob.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.member.job; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; + +import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; + +import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO; + +import cn.iocoder.yudao.module.member.dal.mysql.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderMapper; +import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@Component +public class StatisticsSpaceCapsuleOrderJob implements JobHandler { + @Resource + private StatisticsSpaceCapsuleOrderMapper statisticsSpaceCapsuleOrderMapper; + @Resource + private StatisticsSpaceCapsuleOrderService statisticsSpaceCapsuleOrderService; + @Override + @TenantIgnore + public String execute(String param) throws Exception { + log.info("开始进行定时统计================》"); + DateTime date = DateUtil.date(); + DateTime dateTime = DateUtil.offsetDay(date, -1); + //获取开始时间 + DateTime startTime = DateUtil.beginOfDay(dateTime); + //结束时间 + DateTime endTime = DateUtil.endOfDay(dateTime); + List statistics = statisticsSpaceCapsuleOrderService.statistics(startTime, endTime); + if(ObjUtil.isNotEmpty(statistics)){ + log.info("定时统计数量{}",statistics.size()); + statisticsSpaceCapsuleOrderMapper.insertBatch(statistics); + return "定时统计数量"+ statistics.size(); + }else{ + return "没有定时统计数量"; + } + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleService.java index 2d1a4803..9af8d2b3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleService.java @@ -65,13 +65,4 @@ public interface OrderSpaceCapsuleService { * @return */ OrderSpaceCapsuleDO openCmdAdmin(@Valid @RequestBody OrderSpaceCapsuleAdminVo adminVo); - - /** - * 统计,太空舱 日报,周报 - * @param carTeenId - * @param startTime - * @param endTime - * @return - */ - OrderSpaceCapsuleStatisticsVo getStatistics(Long carTeenId, Date startTime,Date endTime); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java index d08b5d4d..45e8aed9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderspacecapsule/OrderSpaceCapsuleServiceImpl.java @@ -256,41 +256,6 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService { .findFirst() .orElse(BigDecimal.ZERO); } - - @Override - public OrderSpaceCapsuleStatisticsVo getStatistics(Long carTeenId, Date startTime, Date endTime) { - // 查询符合条件的订单列表 - List orderSpaceCapsuleDOS = getOrderList(carTeenId, startTime, endTime); - - // 计算营业额总和 - BigDecimal totalMoney = calculateTotalMoney(orderSpaceCapsuleDOS); - - // 计算总时长 (小时) - BigDecimal totalHour = calculateTotalHours(orderSpaceCapsuleDOS); - - // 计算总订单数 - int totalOrderSum = orderSpaceCapsuleDOS.size(); - Date endTime1=DateUtil.offsetSecond(endTime,1); - // 计算营业额对比 - long daysBetween = DateUtil.betweenDay(startTime, endTime1, false); - BigDecimal previousTotalMoney = getTotalMoney(carTeenId, DateUtil.offsetDay(startTime, -Math.toIntExact(daysBetween)), DateUtil.offsetDay(endTime, -Math.toIntExact(daysBetween))); - BigDecimal compTotalMoney = totalMoney.subtract(previousTotalMoney); - String compType = compTotalMoney.compareTo(BigDecimal.ZERO) >= 0 ? "+" : "-"; - - // 获取对比数据列表 - List compMoney = getComparisonData(carTeenId, startTime, endTime ); - List compHour = getComparisonDataHoru(carTeenId,orderSpaceCapsuleDOS ); - // 构建统计结果对象 - OrderSpaceCapsuleStatisticsVo vo = new OrderSpaceCapsuleStatisticsVo(); - vo.setTotalMoney(totalMoney); - vo.setTotalHour(totalHour); - vo.setCompTotalMoney(compTotalMoney.abs()); // 显示绝对值 - vo.setCompType(compType); - vo.setTotalOrderSum(totalOrderSum); - vo.setCompMoney(compMoney); - vo.setCompHour(compHour); - return vo; - } // 获取指定时间范围的订单列表 private List getOrderList(Long carTeenId, Date startTime, Date endTime) { return orderSpaceCapsuleMapper.selectList( @@ -301,14 +266,6 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService { .orderByAsc(OrderSpaceCapsuleDO::getCreateTime) ); } - // 计算订单列表的总金额 - private BigDecimal calculateTotalMoney(List orderSpaceCapsuleDOS) { - return orderSpaceCapsuleDOS.stream() - .map(OrderSpaceCapsuleDO::getMoney) - .filter(Objects::nonNull) - .reduce(BigDecimal.ZERO, BigDecimal::add); - } - // 计算订单列表的总时长(小时) private BigDecimal calculateTotalHours(List orderSpaceCapsuleDOS) { if(orderSpaceCapsuleDOS==null){ @@ -333,36 +290,11 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService { } return list; } - // 获取指定时间范围内的对比数据(营业额) - private List getComparisonData(Long carTeenId, Date startTime, Date endTime) { - List comparisonData = new ArrayList<>(); - DateTime currentDate = DateUtil.beginOfDay(startTime); - while (!currentDate.isAfter(endTime)) { - DateTime nextDate = DateUtil.endOfDay(currentDate); - // 获取当天的订单列表并计算总金额或总时长 - List dailyOrders = getOrderList(carTeenId, currentDate.toJdkDate(), nextDate.toJdkDate()); - BigDecimal total = dailyOrders.stream() - .map(OrderSpaceCapsuleDO::getMoney) - .filter(Objects::nonNull) - .reduce(BigDecimal.ZERO, BigDecimal::add); - // 创建并添加当天的统计数据 - OrderSpaceCapsuleStatisticsComVo compVo = new OrderSpaceCapsuleStatisticsComVo(); - compVo.setDate(currentDate.toString("MM-dd")); - compVo.setTotalMoney(total); - comparisonData.add(compVo); - // 移动到下一天 - currentDate = DateUtil.offsetDay(currentDate, 1); - } - - return comparisonData; - } - private void validateSpaceCapsuleStatus(SpaceCapsuleDO payNum) { if (payNum.getStatus().equals(SpaceCapsuleEnum.SPACE_CAPSULE_ENUM_FAULT.getCode())) { throw exception(SPACE_CAPSULE_NOT_FAULT); } } - private void validateOrderStatus(OrderSpaceCapsuleDO orderSpaceCapsuleDO) { Integer status = orderSpaceCapsuleDO.getStatus(); if (status.equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_REFUNDED.getCode()) || diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderService.java new file mode 100644 index 00000000..ff4cfc32 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO; + +import java.util.*; +import javax.validation.*; + +/** + * 太空舱订单营业额统计 Service 接口 + * + * @author 管理员 + */ +public interface StatisticsSpaceCapsuleOrderService { + + /** + * 创建太空舱订单营业额统计 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStatisticsSpaceCapsuleOrder(@Valid StatisticsSpaceCapsuleOrderSaveReqVO createReqVO); + + /** + * 更新太空舱订单营业额统计 + * + * @param updateReqVO 更新信息 + */ + void updateStatisticsSpaceCapsuleOrder(@Valid StatisticsSpaceCapsuleOrderSaveReqVO updateReqVO); + + /** + * 删除太空舱订单营业额统计 + * + * @param id 编号 + */ + void deleteStatisticsSpaceCapsuleOrder(Long id); + + /** + * 获得太空舱订单营业额统计 + * + * @param id 编号 + * @return 太空舱订单营业额统计 + */ + StatisticsSpaceCapsuleOrderDO getStatisticsSpaceCapsuleOrder(Long id); + + /** + * 获得太空舱订单营业额统计分页 + * + * @param pageReqVO 分页查询 + * @return 太空舱订单营业额统计分页 + */ + PageResult getStatisticsSpaceCapsuleOrderPage(StatisticsSpaceCapsuleOrderPageReqVO pageReqVO); + List statistics(Date startTime,Date endTime); + OrderSpaceCapsuleStatisticsVo compDayMon(Long carteenId,String type,Date time); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderServiceImpl.java new file mode 100644 index 00000000..e0b075ee --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/statisticsspacecapsuleorder/StatisticsSpaceCapsuleOrderServiceImpl.java @@ -0,0 +1,224 @@ +package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder; + +import cn.hutool.core.date.*; +import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsComVo; +import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO; +import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO; +import cn.iocoder.yudao.module.member.dal.mysql.orderspacecapsule.OrderSpaceCapsuleMapper; +import cn.iocoder.yudao.module.member.dal.mysql.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderMapper; +import cn.iocoder.yudao.module.member.enums.SpaceCapsuleOrderEnum; +import cn.iocoder.yudao.module.member.service.orderspacecapsule.OrderSpaceCapsuleServiceImpl; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import org.checkerframework.checker.units.qual.C; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STATISTICS_SPACE_CAPSULE_ORDER_NOT_EXISTS; + +/** + * 太空舱订单营业额统计 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCapsuleOrderService { + @Resource + private CarteenApi carteenApi; + @Resource + private OrderSpaceCapsuleMapper orderSpaceCapsuleMapper; + @Resource + private StatisticsSpaceCapsuleOrderMapper statisticsSpaceCapsuleOrderMapper; + @Resource + private OrderSpaceCapsuleServiceImpl orderSpaceCapsuleService; + @Override + public Long createStatisticsSpaceCapsuleOrder(StatisticsSpaceCapsuleOrderSaveReqVO createReqVO) { + // 插入 + StatisticsSpaceCapsuleOrderDO statisticsSpaceCapsuleOrder = BeanUtils.toBean(createReqVO, StatisticsSpaceCapsuleOrderDO.class); + statisticsSpaceCapsuleOrderMapper.insert(statisticsSpaceCapsuleOrder); + // 返回 + return statisticsSpaceCapsuleOrder.getId(); + } + + @Override + public void updateStatisticsSpaceCapsuleOrder(StatisticsSpaceCapsuleOrderSaveReqVO updateReqVO) { + // 校验存在 + validateStatisticsSpaceCapsuleOrderExists(updateReqVO.getId()); + // 更新 + StatisticsSpaceCapsuleOrderDO updateObj = BeanUtils.toBean(updateReqVO, StatisticsSpaceCapsuleOrderDO.class); + statisticsSpaceCapsuleOrderMapper.updateById(updateObj); + } + + @Override + public void deleteStatisticsSpaceCapsuleOrder(Long id) { + // 校验存在 + validateStatisticsSpaceCapsuleOrderExists(id); + // 删除 + statisticsSpaceCapsuleOrderMapper.deleteById(id); + } + + private void validateStatisticsSpaceCapsuleOrderExists(Long id) { + if (statisticsSpaceCapsuleOrderMapper.selectById(id) == null) { + throw exception(STATISTICS_SPACE_CAPSULE_ORDER_NOT_EXISTS); + } + } + + @Override + public StatisticsSpaceCapsuleOrderDO getStatisticsSpaceCapsuleOrder(Long id) { + return statisticsSpaceCapsuleOrderMapper.selectById(id); + } + + @Override + public PageResult getStatisticsSpaceCapsuleOrderPage(StatisticsSpaceCapsuleOrderPageReqVO pageReqVO) { + return statisticsSpaceCapsuleOrderMapper.selectPage(pageReqVO); + } + public List statistics(Date startTime,Date endTime){ + List orderSpaceCapsuleDOS = orderSpaceCapsuleMapper.selectList(new LambdaQueryWrapperX() + .eq(OrderSpaceCapsuleDO::getStatus, SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode()) + .between(OrderSpaceCapsuleDO::getCreateTime, startTime, endTime) + ); + List list=new ArrayList<>(); + if(ObjUtil.isNotEmpty(orderSpaceCapsuleDOS)){ + Map> collect = orderSpaceCapsuleDOS.stream().collect(Collectors.groupingBy(OrderSpaceCapsuleDO::getCarteenId)); + for (Map.Entry> entry : collect.entrySet()) { + Long carteenId = entry.getKey(); + List value = entry.getValue(); + StatisticsSpaceCapsuleOrderDO orderDO=new StatisticsSpaceCapsuleOrderDO(); + BigDecimal totalMoney = value.stream() + .map(OrderSpaceCapsuleDO::getMoney) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + orderDO.setTotalMoney(totalMoney); + orderDO.setTotalOrder(value.size()); + BigDecimal minute = value.stream() + .map(f -> new BigDecimal(f.getComboMinutes() * f.getComboNum())) + .reduce(BigDecimal.ZERO, BigDecimal::add); + orderDO.setTotalMinute(minute); + orderDO.setCarteenId(carteenId); + BigDecimal refundMoney = value.stream() + .map(OrderSpaceCapsuleDO::getRefundMoney) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + orderDO.setRefundMoney(refundMoney); + int i = value.stream() + .map(f -> new BigDecimal(f.getComboNum())) + .reduce(BigDecimal.ZERO, BigDecimal::add).intValue(); + orderDO.setTotalPackageSum(i); + CarteenRespDto carteenById = carteenApi.getCarteenById(orderDO.getCarteenId()); + orderDO.setCarteenName(carteenById.getStoresName()); + int size = (int) value.stream().map(OrderSpaceCapsuleDO::getUserId) + .filter(Objects::nonNull) + .distinct().count(); + orderDO.setCreateTime(LocalDateTimeUtil.offset(LocalDateTime.now(),-1, ChronoUnit.DAYS)); + orderDO.setTotalCustomer(size); + list.add(orderDO); + } + } + return list; + } + + @Override + public OrderSpaceCapsuleStatisticsVo compDayMon(Long carteenId, String type, Date time) { + if("day".equals(type)){ + return compDay(carteenId,time); + }else if("month".equals(type)){ + return compMonth(carteenId); + } + return null; + } + /** + * 日报 + * @param carteenId + * @param end + * @return + */ + public OrderSpaceCapsuleStatisticsVo compDay(Long carteenId,Date end){ + DateTime start = DateUtil.beginOfDay(end); + //获取今天的信息 + OrderSpaceCapsuleStatisticsVo orvo = orderSpaceCapsuleMapper.compDay(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(), start, end, carteenId); + //获取昨日的信息 + DateTime dateTime = DateUtil.offsetDay(start, -1); + DateTime start2 = DateUtil.beginOfDay(dateTime); + DateTime end2 = DateUtil.endOfDay(dateTime); + BigDecimal compMoney = orderSpaceCapsuleService.getTotalMoney(carteenId, start2, end2); + orvo.setCompMoney(compMoney); + DateTime dateTime1 = DateUtil.beginOfMonth(end2); + DateRange range = DateUtil.range(dateTime1, end2, DateField.DAY_OF_MONTH); + List list=new ArrayList<>(); + for (DateTime time : range) { + DateTime var1 = DateUtil.beginOfDay(time); + DateTime var2 = DateUtil.endOfDay(time); + OrderSpaceCapsuleStatisticsComVo vo = orderSpaceCapsuleMapper.compMoney(var1, var2); + if(vo==null){ + OrderSpaceCapsuleStatisticsComVo vo1=new OrderSpaceCapsuleStatisticsComVo(); + + vo1.setTotalMoney(new BigDecimal(0)); + vo=vo1; + } + vo.setDate(DateUtil.format(var2,"d")); + list.add(vo) ; + } + orvo.setLists(list); + List lists = orvo.getLists(); + OrderSpaceCapsuleStatisticsComVo vo=new OrderSpaceCapsuleStatisticsComVo(); + vo.setTotalMoney(orvo.getTotalMoney()); + vo.setDate(DateUtil.format(DateUtil.date(),"d")); + lists.add(vo); + orvo.setLists(lists); + return orvo; + } + /** + * 月报 + * @param carteenId + * @return + */ + public OrderSpaceCapsuleStatisticsVo compMonth(Long carteenId){ + DateTime end = DateUtil.date(); + DateTime start = DateUtil.beginOfMonth(end); + //这个月 + OrderSpaceCapsuleStatisticsVo orvo = orderSpaceCapsuleMapper.compDay(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(), start, end, carteenId); + //获取上个月的信息 + DateTime dateTime = DateUtil.offsetMonth(start, -1); + DateTime start2 = DateUtil.beginOfMonth(dateTime); + DateTime end2 = DateUtil.endOfMonth(dateTime); + BigDecimal compMoney = orderSpaceCapsuleService.getTotalMoney(carteenId, start2, end2); + orvo.setCompMoney(compMoney); + //一年开始和结束 + DateTime var1 = DateUtil.beginOfYear(start2); + DateTime var2 = DateUtil.endOfYear(start2); + DateRange range = DateUtil.range(var1, var2, DateField.MONTH); + List list=new ArrayList<>(); + for (DateTime time : range) { + DateTime var3 = DateUtil.beginOfMonth(time); + DateTime var4 = DateUtil.endOfMonth(time); + OrderSpaceCapsuleStatisticsComVo vo = orderSpaceCapsuleMapper.compMoney(var3, var4); + if(vo==null){ + OrderSpaceCapsuleStatisticsComVo vo1=new OrderSpaceCapsuleStatisticsComVo(); + vo1.setTotalMoney(new BigDecimal(0)); + vo=vo1; + } + if(DateUtil.isSameMonth(end, var3)){ + vo.setDate(orvo.getTotalMoney()+""); + } + vo.setDate(DateUtil.format(var3,"M月")); + list.add(vo) ; + } + orvo.setLists(list); + return orvo; + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderspacecapsule/OrderSpaceCapsuleMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderspacecapsule/OrderSpaceCapsuleMapper.xml index d27028e2..016fa6e4 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderspacecapsule/OrderSpaceCapsuleMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderspacecapsule/OrderSpaceCapsuleMapper.xml @@ -9,4 +9,33 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + \ No newline at end of file