diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/AdminOrderController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/AdminOrderController.java index 9547a5961..f8f3de0e5 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/admin/AdminOrderController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/AdminOrderController.java @@ -6,6 +6,7 @@ import com.czg.order.dto.OrderInfoQueryDTO; import com.czg.order.dto.OrderInfoRefundDTO; import com.czg.order.entity.OrderInfo; import com.czg.order.service.OrderInfoService; +import com.czg.order.vo.HistoryOrderPrintVo; import com.czg.order.vo.HistoryOrderVo; import com.czg.order.vo.OrderInfoVo; import com.czg.resp.CzgResult; @@ -49,6 +50,11 @@ public class AdminOrderController { return orderInfoService.getOrderDetails(orderId); } + @GetMapping("/getOrderByIdPrint") + public CzgResult getOrderByIdPrint(Long orderId) { + return orderInfoService.getOrderByIdPrint(orderId); + } + @GetMapping("/historyOrder") public CzgResult historyOrder( @RequestParam(required = false) Long orderId, @@ -65,6 +71,16 @@ public class AdminOrderController { return CzgResult.success(orderInfoService.createOrder(addDto)); } +// /** +// * 合单 +// * @param refundDTO +// * @return +// */ +// @PostMapping("/mergeOrder") +// public CzgResult mergeOrder(@Validated @RequestBody OrderInfoRefundDTO refundDTO) { +// +// } + /** * 订单全额退款 只传订单id * 部分退款 传参refundDetail diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java new file mode 100644 index 000000000..f837dbef1 --- /dev/null +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java @@ -0,0 +1,83 @@ +package com.czg.controller.admin; + +import com.czg.log.annotation.OperationLog; +import com.czg.order.param.DataSummaryProductSaleParam; +import com.czg.order.param.DataSummaryTradeParam; +import com.czg.order.service.DataSummaryService; +import com.czg.order.vo.DataSummaryDateAmountVo; +import com.czg.order.vo.DataSummaryPayTypeVo; +import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryTradeVo; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 数据统计 + * + * @author tankaikai + * @since 2025-03-07 15:25 + */ +@AllArgsConstructor +@RestController +@RequestMapping("/admin/data/summary") +public class DataSummaryController { + private final DataSummaryService dataSummaryService; + + /** + * 营业板块-上半部分 + */ + @GetMapping("trade") + @OperationLog("营业板块-上半部分") + //@SaAdminCheckPermission("dataSummary:trade") + public CzgResult getTradeData(DataSummaryTradeParam param) { + Long shopId = StpKit.USER.getShopId(0L); + param.setShopId(shopId); + DataSummaryTradeVo data = dataSummaryService.getTradeData(param); + return CzgResult.success(data); + } + + /** + * 商品销售 右下 + */ + @GetMapping("productSaleDate") + @OperationLog("商品销售-右下") + //@SaAdminCheckPermission("dataSummary:productSaleData") + private CzgResult getProductSaleData(DataSummaryProductSaleParam param) { + Long shopId = StpKit.USER.getShopId(0L); + param.setShopId(shopId); + DataSummaryProductSaleVo data = dataSummaryService.getProductSaleData(param); + return CzgResult.success(data); + } + + /** + * 销售趋势柱状图 左下 + * + * @param day 天数 + */ + @GetMapping("dateAmount") + @OperationLog("销售趋势柱状图 左下") + //@SaAdminCheckPermission("dataSummary:dateAmount") + private CzgResult getDateAmount(@RequestParam Integer day) { + Long shopId = StpKit.USER.getShopId(0L); + DataSummaryDateAmountVo data = dataSummaryService.getSummaryAmountData(shopId, day); + return CzgResult.success(data); + } + + /** + * 支付占比饼图 左下 + * + * @param day 天数 + */ + @GetMapping("datePayType") + //@SaAdminCheckPermission("dataSummary:datePayType") + private Object shopSummaryPayType(@RequestParam Integer day) { + Long shopId = StpKit.USER.getShopId(0L); + DataSummaryPayTypeVo data = dataSummaryService.getSummaryPayTypeData(shopId, day); + return CzgResult.success(data); + } +} diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/SaleSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/SaleSummaryController.java new file mode 100644 index 000000000..15339a09a --- /dev/null +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/SaleSummaryController.java @@ -0,0 +1,68 @@ +package com.czg.controller.admin; + +import com.czg.log.annotation.OperationLog; +import com.czg.order.param.SaleSummaryCountParam; +import com.czg.order.service.SaleSummaryService; +import com.czg.order.vo.SaleSummaryCountVo; +import com.czg.order.vo.SaleSummaryInfoVo; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.mybatisflex.core.paginate.Page; +import com.pig4cloud.plugin.excel.annotation.ResponseExcel; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 销量统计 + * + * @author tankaikai + * @since 2025-03-07 15:25 + */ +@AllArgsConstructor +@RestController +@RequestMapping("/admin/sale/summary") +public class SaleSummaryController { + private final SaleSummaryService saleSummaryService; + + /** + * 统计 + */ + @GetMapping("count") + @OperationLog("统计") + //@SaAdminCheckPermission("saleSummary:count") + public CzgResult summaryCount(SaleSummaryCountParam param) { + Long shopId = StpKit.USER.getShopId(0L); + param.setShopId(shopId); + SaleSummaryCountVo data = saleSummaryService.summaryCount(param); + return CzgResult.success(data); + } + + /** + * 分页 + */ + @GetMapping("page") + @OperationLog("分页") + //@SaAdminCheckPermission("saleSummary:page") + public CzgResult> summaryPage(SaleSummaryCountParam param) { + Long shopId = StpKit.USER.getShopId(0L); + param.setShopId(shopId); + Page page = saleSummaryService.summaryPage(param); + return CzgResult.success(page); + } + + /** + * 导出 + */ + @ResponseExcel(name = "销售统计明细") + @GetMapping("/export") + @OperationLog("导出") + //@SaAdminCheckPermission("saleSummary:export") + public List summaryExport(SaleSummaryCountParam param) { + return saleSummaryService.summaryList(param); + } + +} diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java new file mode 100644 index 000000000..27849b632 --- /dev/null +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/TableSummaryController.java @@ -0,0 +1,54 @@ +package com.czg.controller.admin; + +import com.czg.log.annotation.OperationLog; +import com.czg.order.param.TableSummaryParam; +import com.czg.order.service.TableSummaryService; +import com.czg.order.vo.TableSummaryExportVo; +import com.czg.order.vo.TableSummaryInfoVo; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.pig4cloud.plugin.excel.annotation.ResponseExcel; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 台桌统计 + * + * @author tankaikai + * @since 2025-03-07 15:25 + */ +@AllArgsConstructor +@RestController +@RequestMapping("/admin/table/summary") +public class TableSummaryController { + private final TableSummaryService tableSummaryService; + + /** + * 统计 + */ + @GetMapping("list") + @OperationLog("统计") + //@SaAdminCheckPermission("tableSummary:list") + public CzgResult> summaryList(TableSummaryParam param) { + Long shopId = StpKit.USER.getShopId(0L); + param.setShopId(shopId); + List data = tableSummaryService.summaryList(param); + return CzgResult.success(data); + } + + /** + * 导出 + */ + @ResponseExcel(name = "台桌统计") + @GetMapping("export") + @OperationLog("导出") + //@SaAdminCheckPermission("tableSummary:export") + public List summaryExport(TableSummaryParam param) { + return tableSummaryService.summaryExport(param); + } + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java new file mode 100644 index 000000000..9b7791606 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java @@ -0,0 +1,31 @@ +package com.czg.order.param; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 数据统计-营业-产品销量 + * + * @author tankaikai + * @since 2025-03-07 15:35 + */ +@Data +public class DataSummaryProductSaleParam implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 天数 + */ + private Integer day; + /** + * 店铺id + */ + @JSONField(serialize = false) + private Long shopId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryTradeParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryTradeParam.java new file mode 100644 index 000000000..97eb9dea9 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryTradeParam.java @@ -0,0 +1,35 @@ +package com.czg.order.param; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 数据统计-营业-上半部分 + * + * @author tankaikai + * @since 2025-03-07 15:35 + */ +@Data +public class DataSummaryTradeParam implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 开始时间 格式:yyyy-MM-dd + */ + private String beginTime; + /** + * 结束时间 格式:yyyy-MM-dd + */ + private String endTime; + /** + * 店铺id + */ + @JSONField(serialize = false) + private Long shopId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java new file mode 100644 index 000000000..aed12aed6 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java @@ -0,0 +1,36 @@ +package com.czg.order.param; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 销售统计Count入参 + * @author tankaikai + * @since 2025-03-07 16:23 + */ +@Data +public class SaleSummaryCountParam implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * shopId + */ + private Long shopId; + /** + * 分类id + */ + private Long cateId; + /** + * 商品名称 + */ + private String proName; + /** + * 类型 + */ + private Integer type; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/TableSummaryParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/TableSummaryParam.java new file mode 100644 index 000000000..3965d35d3 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/TableSummaryParam.java @@ -0,0 +1,35 @@ +package com.czg.order.param; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 台桌统计 + * + * @author tankaikai + * @since 2025-03-07 15:35 + */ +@Data +public class TableSummaryParam implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 开始时间 格式:yyyy-MM-dd + */ + private String beginTime; + /** + * 结束时间 格式:yyyy-MM-dd + */ + private String endTime; + /** + * 店铺id + */ + @JSONField(serialize = false) + private Long shopId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java new file mode 100644 index 000000000..52d164502 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java @@ -0,0 +1,26 @@ +package com.czg.order.service; + +import com.czg.order.param.DataSummaryProductSaleParam; +import com.czg.order.param.DataSummaryTradeParam; +import com.czg.order.vo.DataSummaryDateAmountVo; +import com.czg.order.vo.DataSummaryPayTypeVo; +import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryTradeVo; + +/** + * 数据统计Service接口 + * + * @author tankaikai + * @since 2025-03-07 15:31 + */ +public interface DataSummaryService { + + DataSummaryTradeVo getTradeData(DataSummaryTradeParam param); + + DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param); + + DataSummaryDateAmountVo getSummaryAmountData(Long shopId,Integer day); + + DataSummaryPayTypeVo getSummaryPayTypeData(Long shopId, Integer day); + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderDetailService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderDetailService.java index d4c5088d9..81675256c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderDetailService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderDetailService.java @@ -1,5 +1,6 @@ package com.czg.order.service; +import com.czg.order.vo.OrderDetailPrintVo; import com.mybatisflex.core.service.IService; import com.czg.order.entity.OrderDetail; @@ -14,5 +15,5 @@ import java.util.List; public interface OrderDetailService extends IService { void createOrderDetails(Long orderId, List orderDetails); - + List getOrderDetailPrint(Long orderId); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java index 90e6cdb74..de5ac211e 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java @@ -5,6 +5,7 @@ import com.czg.order.dto.*; import com.czg.order.entity.OrderDetail; import com.czg.order.entity.OrderInfo; import com.czg.order.enums.PayEnums; +import com.czg.order.vo.HistoryOrderPrintVo; import com.czg.order.vo.HistoryOrderVo; import com.czg.order.vo.OrderInfoVo; import com.czg.resp.CzgResult; @@ -29,6 +30,7 @@ public interface OrderInfoService extends IService { Page getOrderByPage(OrderInfoQueryDTO param); CzgResult getOrderDetails(Long orderId); + CzgResult getOrderByIdPrint(Long orderId); HistoryOrderVo historyOrder(Long orderId, String tableCode); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/SaleSummaryService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/SaleSummaryService.java new file mode 100644 index 000000000..ae9fedf3f --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/SaleSummaryService.java @@ -0,0 +1,23 @@ +package com.czg.order.service; + +import com.czg.order.param.SaleSummaryCountParam; +import com.czg.order.vo.SaleSummaryCountVo; +import com.czg.order.vo.SaleSummaryInfoVo; +import com.mybatisflex.core.paginate.Page; + +import java.util.List; + +/** + * 销量统计Service接口 + * + * @author tankaikai + * @since 2025-03-07 15:31 + */ +public interface SaleSummaryService { + + SaleSummaryCountVo summaryCount(SaleSummaryCountParam param); + Page summaryPage(SaleSummaryCountParam param); + List summaryList(SaleSummaryCountParam param); + + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java new file mode 100644 index 000000000..c95dd12b4 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/TableSummaryService.java @@ -0,0 +1,21 @@ +package com.czg.order.service; + +import com.czg.order.param.TableSummaryParam; +import com.czg.order.vo.TableSummaryExportVo; +import com.czg.order.vo.TableSummaryInfoVo; + +import java.util.List; + +/** + * 台桌统计Service接口 + * + * @author tankaikai + * @since 2025-03-07 15:31 + */ +public interface TableSummaryService { + + List summaryList(TableSummaryParam param); + List summaryExport(TableSummaryParam param); + + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryDateAmountVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryDateAmountVo.java new file mode 100644 index 000000000..f4dd908a4 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryDateAmountVo.java @@ -0,0 +1,50 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 销售趋势柱状图 左下 + * @author tankaikai + * @since 2025-03-07 16:08 + */ +@NoArgsConstructor +@Data +public class DataSummaryDateAmountVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * total + */ + private List total; + + /** + * TotalVo + */ + @NoArgsConstructor + @Data + public static class TotalVo { + /** + * 实收金额 + */ + private Integer actualAmount; + /** + * 优惠金额 + */ + private Integer discountAmount; + /** + * 订单金额 + */ + private Integer orderAmount; + /** + * 日期 + */ + private String tradeDay; + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryPayTypeVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryPayTypeVo.java new file mode 100644 index 000000000..78a010bd8 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryPayTypeVo.java @@ -0,0 +1,43 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 支付占比饼图 左下 + * @author tankaikai + * @since 2025-03-07 16:08 + */ +@NoArgsConstructor +@Data +public class DataSummaryPayTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * countPayType + */ + private List countPayType; + + /** + * CountPayTypeVo + */ + @NoArgsConstructor + @Data + public static class CountPayTypeVo { + /** + * 笔数 + */ + private Integer count; + /** + * 支付方式 + */ + private String payType; + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryProductSaleVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryProductSaleVo.java new file mode 100644 index 000000000..711cae5e5 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryProductSaleVo.java @@ -0,0 +1,177 @@ +package com.czg.order.vo; + +import com.mybatisflex.core.paginate.Page; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 数据汇总-商品销售 + * @author tankaikai + * @since 2025-03-07 15:50 + */ +@NoArgsConstructor +@Data +public class DataSummaryProductSaleVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * productSum + */ + private ProductSumVo productSum; + /** + * countList + */ + private List countList; + /** + * productCount + */ + private ProductCountVo productCount; + /** + * productList + */ + private Page productList; + + /** + * ProductSumVo + */ + @NoArgsConstructor + @Data + public static class ProductSumVo { + /** + * icon + */ + private String icon; + /** + * isAmount + */ + private String isAmount; + /** + * payAmount + */ + private BigDecimal payAmount; + /** + * payType + */ + private String payType; + /** + * saveAmount + */ + private Object saveAmount; + } + + /** + * ProductCountVo + */ + @NoArgsConstructor + @Data + public static class ProductCountVo { + /** + * icon + */ + private String icon; + /** + * isAmount + */ + private String isAmount; + /** + * payAmount + */ + private BigDecimal payAmount; + /** + * payType + */ + private String payType; + /** + * saveAmount + */ + private Object saveAmount; + } + /** + * ContentVo + */ + @NoArgsConstructor + @Data + public static class ContentVo { + /** + * cateName + */ + private String cateName; + /** + * num + */ + private BigDecimal num; + /** + * price + */ + private BigDecimal price; + /** + * productId + */ + private Object productId; + /** + * productName + */ + private String productName; + /** + * productSkuId + */ + private Object productSkuId; + /** + * productSkuName + */ + private Object productSkuName; + /** + * refAmount + */ + private BigDecimal refAmount; + /** + * refNum + */ + private BigDecimal refNum; + /** + * salesAmount + */ + private BigDecimal salesAmount; + + + + + + /** + * 销售数量 + */ + private BigDecimal salesNum; + /** + * 单位名称 + */ + private String unitName; + } + + /** + * CountListVo + */ + @NoArgsConstructor + @Data + public static class CountListVo { + /** + * 销售额 + */ + private BigDecimal saleAmount; + /** + * 销售量 + */ + private BigDecimal saleNum; + /** + * 日期 + */ + private String tradeDay; + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryTradeVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryTradeVo.java new file mode 100644 index 000000000..862f4bad8 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/DataSummaryTradeVo.java @@ -0,0 +1,147 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 数据统计-营业-上半部分 + * @author tankaikai + * @since 2025-03-07 15:35 + */ +@NoArgsConstructor +@Data +public class DataSummaryTradeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * sale + */ + private SaleVo sale; + /** + * count + */ + private CountVo count; + /** + * vip + */ + private VipVo vip; + + /** + * SaleVo + */ + @NoArgsConstructor + @Data + public static class SaleVo { + /** + * 会员退款金额 + */ + private BigDecimal outAmount; + /** + * 总金额 + */ + private BigDecimal totalSaleAmount; + /** + * 会员总金额 + */ + private BigDecimal totalVipAmount; + /** + * 会员充值金额 + */ + private BigDecimal inAmount; + /** + * 总实收 + */ + private BigDecimal incomeAmountAll; + /** + * 销售收款金额 + */ + private BigDecimal incomeAmount; + /** + * payCount + */ + private List payCount; + /** + * 销售退款金额 + */ + private BigDecimal refundAmount; + + /** + * PayCountVo + */ + @NoArgsConstructor + @Data + public static class PayCountVo { + /** + * 图标 + */ + private String icon; + /** + * isAmount + */ + private String isAmount; + /** + * 金额 + */ + private Integer payAmount; + /** + * 描述 + */ + private String payType; + /** + * saveAmount + */ + private Object saveAmount; + } + } + + /** + * CountVo + */ + @NoArgsConstructor + @Data + public static class CountVo { + /** + * 客单价 + */ + private Integer unitPrice; + /** + * 翻台率 + */ + private String turnoverRate; + /** + * 优惠单数 + */ + private Integer saveNum; + /** + * 优惠金额 + */ + private BigDecimal saveAmount; + } + + /** + * VipVo + */ + @NoArgsConstructor + @Data + public static class VipVo { + /** + * 会员消费笔数 + */ + private Integer useNum; + /** + * 新增会员数 + */ + private Integer newFlow; + /** + * 会员消费金额 + */ + private BigDecimal useAmount; + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/HistoryOrderPrintVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/HistoryOrderPrintVo.java new file mode 100644 index 000000000..6b71a1c8a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/HistoryOrderPrintVo.java @@ -0,0 +1,18 @@ +package com.czg.order.vo; + +import com.czg.order.entity.OrderInfo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; +import java.util.Map; + +/** + * @author ww + * @description + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HistoryOrderPrintVo extends OrderInfo { + private Map> detailMap; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/OrderDetailPrintVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/OrderDetailPrintVo.java new file mode 100644 index 000000000..1900443d8 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/OrderDetailPrintVo.java @@ -0,0 +1,23 @@ +package com.czg.order.vo; + +import com.czg.order.entity.OrderDetail; +import lombok.*; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 订单详情 实体类。 + * + * @author ww + * @since 2025-02-14 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrderDetailPrintVo extends OrderDetail implements Serializable{ + + + private Long categoryId; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java new file mode 100644 index 000000000..8e7e1727d --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java @@ -0,0 +1,41 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 销量统计汇总 + * @author tankaikai + * @since 2025-03-07 16:22 + */ +@NoArgsConstructor +@Data +public class SaleSummaryCountVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * icon + */ + private String icon; + /** + * isAmount + */ + private String isAmount; + /** + * payAmount + */ + private Double payAmount; + /** + * payType + */ + private String payType; + /** + * saveAmount + */ + private Object saveAmount; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryExportVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryExportVo.java new file mode 100644 index 000000000..54afdd51f --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryExportVo.java @@ -0,0 +1,67 @@ +package com.czg.order.vo; + +import cn.idev.excel.annotation.ExcelIgnore; +import cn.idev.excel.annotation.ExcelProperty; +import com.alibaba.fastjson2.annotation.JSONField; +import com.pig4cloud.plugin.excel.annotation.ExcelLine; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 销量统计导出 + * + * @author tankaikai + * @since 2025-03-07 16:22 + */ +@Data +public class SaleSummaryExportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 导入时候回显行号 + */ + @ExcelLine + @ExcelIgnore + @JSONField(serialize = false) + private Long lineNum; + /** + * 商品分类 + */ + @ExcelProperty("商品分类") + private String categoryName; + /** + * 商品名称 + */ + @ExcelProperty("商品名称") + private String productName; + /** + * 商品规格 + */ + @ExcelProperty("商品规格") + private String specName; + /** + * 销售额 + */ + @ExcelProperty("销售额") + private BigDecimal salesAmount; + /** + * 退单额 + */ + @ExcelProperty("退单额") + private BigDecimal refundAmount; + /** + * 实际销量 + */ + @ExcelProperty("实际销量") + private BigDecimal salesNum; + /** + * 退单量 + */ + @ExcelProperty("退单量") + private BigDecimal refundNum; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryInfoVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryInfoVo.java new file mode 100644 index 000000000..079838aed --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryInfoVo.java @@ -0,0 +1,103 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 销量统计明细 + * @author tankaikai + * @since 2025-03-07 16:22 + */ +@NoArgsConstructor +@Data +public class SaleSummaryInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * cateName + */ + private String cateName; + /** + * name + */ + private String name; + /** + * productId + */ + private Integer productId; + /** + * refAmount + */ + private Integer refAmount; + /** + * refNum + */ + private Integer refNum; + /** + * salesAmount + */ + private Integer salesAmount; + /** + * salesNum + */ + private Integer salesNum; + /** + * skus + */ + private List skus; + /** + * typeEnum + */ + private String typeEnum; + + /** + * SkusVo + */ + @NoArgsConstructor + @Data + public static class SkusVo { + /** + * cateName + */ + private String cateName; + /** + * name + */ + private String name; + /** + * productId + */ + private Integer productId; + /** + * refAmount + */ + private Integer refAmount; + /** + * refNum + */ + private Integer refNum; + /** + * salesAmount + */ + private Integer salesAmount; + /** + * salesNum + */ + private Integer salesNum; + /** + * skus + */ + private List skus; + /** + * typeEnum + */ + private String typeEnum; + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java new file mode 100644 index 000000000..36a1387f4 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryExportVo.java @@ -0,0 +1,98 @@ +package com.czg.order.vo; + +import cn.idev.excel.annotation.ExcelIgnore; +import cn.idev.excel.annotation.ExcelProperty; +import com.alibaba.fastjson2.annotation.JSONField; +import com.pig4cloud.plugin.excel.annotation.ExcelLine; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 台桌统计明细 + * + * @author tankaikai + * @since 2025-03-07 16:22 + */ +@Data +public class TableSummaryExportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 导入时候回显行号 + */ + @ExcelLine + @ExcelIgnore + @JSONField(serialize = false) + private Long lineNum; + /** + * 台桌 + */ + @ExcelProperty("台桌") + private String tableName; + /** + * 日期 + */ + @ExcelProperty("日期") + private String date; + /** + * 商品分类 + */ + @ExcelProperty("商品分类") + private String categoryName; + /** + * 商品名称 + */ + @ExcelProperty("商品名称") + private String productName; + /** + * 单位 + */ + @ExcelProperty("单位") + private String unitName; + /** + * 商品规格 + */ + @ExcelProperty("商品规格") + private String specName; + /** + * 销量 + */ + @ExcelProperty("销量") + private BigDecimal salesNum; + /** + * 单价 + */ + @ExcelProperty("单价") + private BigDecimal price; + /** + * 金额 + */ + @ExcelProperty("金额") + private BigDecimal amount; + /** + * 销售额 + */ + @ExcelProperty("销售额") + private BigDecimal salesAmount; + /** + * 总销售额 + */ + @ExcelProperty("总销售额") + private BigDecimal totalSalesAmount; + /** + * 退单量 + */ + @ExcelProperty("退单量") + private Integer refundNum; + /** + * 退单额 + */ + @ExcelProperty("退单额") + private BigDecimal refundAmount; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryInfoVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryInfoVo.java new file mode 100644 index 000000000..dddfc2f4d --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/TableSummaryInfoVo.java @@ -0,0 +1,77 @@ +package com.czg.order.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 台桌统计明细 + * @author tankaikai + * @since 2025-03-07 16:22 + */ +@NoArgsConstructor +@Data +public class TableSummaryInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + +// 台桌 日期 商品分类 商品名称 单位 商品规格 销量 单价 金额 销售额 总销售额 退单量 退单额 + + + /** + * 台桌 + */ + private String tableName; + /** + * 日期 + */ + private String date; + /** + * 商品分类 + */ + private String categoryName; + /** + * 商品名称 + */ + private String productName; + /** + * 单位 + */ + private String unitName; + /** + * 商品规格 + */ + private String specName; + /** + * 销量 + */ + private BigDecimal salesNum; + /** + * 单价 + */ + private BigDecimal price; + /** + * 金额 + */ + private BigDecimal amount; + /** + * 销售额 + */ + private BigDecimal salesAmount; + /** + * 总销售额 + */ + private BigDecimal totalSalesAmount; + /** + * 退单量 + */ + private Integer refundNum; + /** + * 退单额 + */ + private BigDecimal refundAmount; +} diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderDetailMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderDetailMapper.java index 72e29e4c3..e69ae133c 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderDetailMapper.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderDetailMapper.java @@ -1,5 +1,6 @@ package com.czg.service.order.mapper; +import com.czg.order.vo.OrderDetailPrintVo; import com.mybatisflex.core.BaseMapper; import com.czg.order.entity.OrderDetail; import org.apache.ibatis.annotations.Param; @@ -14,4 +15,7 @@ import java.util.List; */ public interface OrderDetailMapper extends BaseMapper { void createOrderDetails(@Param("orderId") Long orderId,@Param("orderDetails") List orderDetails); + + + List getOrderDetailPrint(Long orderId); } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderInfoMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderInfoMapper.java index 73ed2d5c8..ee2690d7f 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderInfoMapper.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/OrderInfoMapper.java @@ -3,6 +3,7 @@ package com.czg.service.order.mapper; import com.czg.account.vo.HandoverCategoryListVo; import com.czg.account.vo.HandoverProductListVo; import com.czg.order.entity.OrderInfo; +import com.czg.order.vo.OrderDetailPrintVo; import com.mybatisflex.core.BaseMapper; import java.math.BigDecimal; diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java new file mode 100644 index 000000000..cb8e2e79d --- /dev/null +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java @@ -0,0 +1,38 @@ +package com.czg.service.order.service.impl; + +import com.czg.order.param.DataSummaryProductSaleParam; +import com.czg.order.param.DataSummaryTradeParam; +import com.czg.order.service.DataSummaryService; +import com.czg.order.vo.DataSummaryDateAmountVo; +import com.czg.order.vo.DataSummaryPayTypeVo; +import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryTradeVo; +import org.springframework.stereotype.Service; + +/** + * 数据统计Service实现类 + * @author tankaikai + * @since 2025-03-07 15:32 + */ +@Service +public class DataSummaryServiceImpl implements DataSummaryService { + @Override + public DataSummaryTradeVo getTradeData(DataSummaryTradeParam param) { + return new DataSummaryTradeVo(); + } + + @Override + public DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param) { + return new DataSummaryProductSaleVo(); + } + + @Override + public DataSummaryDateAmountVo getSummaryAmountData(Long shopId, Integer day) { + return new DataSummaryDateAmountVo(); + } + + @Override + public DataSummaryPayTypeVo getSummaryPayTypeData(Long shopId, Integer day) { + return new DataSummaryPayTypeVo(); + } +} diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderDetailServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderDetailServiceImpl.java index 7fb3a04f8..309e0f209 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderDetailServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderDetailServiceImpl.java @@ -2,6 +2,7 @@ package com.czg.service.order.service.impl; import com.czg.order.entity.OrderDetail; import com.czg.order.service.OrderDetailService; +import com.czg.order.vo.OrderDetailPrintVo; import com.czg.service.order.mapper.OrderDetailMapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import org.apache.dubbo.config.annotation.DubboService; @@ -15,10 +16,15 @@ import java.util.List; * @since 2025-02-13 */ @DubboService -public class OrderDetailServiceImpl extends ServiceImpl implements OrderDetailService{ +public class OrderDetailServiceImpl extends ServiceImpl implements OrderDetailService { @Override public void createOrderDetails(Long orderId, List orderDetails) { getMapper().createOrderDetails(orderId, orderDetails); } + + @Override + public List getOrderDetailPrint(Long orderId) { + return getMapper().getOrderDetailPrint(orderId); + } } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 37a161395..67283c1c2 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -26,9 +26,7 @@ import com.czg.order.service.CashierCartService; import com.czg.order.service.OrderDetailService; import com.czg.order.service.OrderInfoService; import com.czg.order.service.OrderPaymentService; -import com.czg.order.vo.HistoryOrderVo; -import com.czg.order.vo.OrderDetailSmallVO; -import com.czg.order.vo.OrderInfoVo; +import com.czg.order.vo.*; import com.czg.resp.CzgResult; import com.czg.service.RedisService; import com.czg.service.order.enums.OrderStatusEnums; @@ -36,6 +34,7 @@ import com.czg.service.order.mapper.OrderInfoMapper; import com.czg.utils.AssertUtil; import com.czg.utils.CzgStrUtils; import com.czg.utils.PageUtil; +import com.mybatisflex.core.BaseMapper; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.update.UpdateChain; @@ -134,6 +133,24 @@ public class OrderInfoServiceImpl extends ServiceImpl getOrderByIdPrint(Long orderId) { + HistoryOrderPrintVo historyOrderVo = getOneAs(new QueryWrapper() + .eq(OrderInfo::getId, orderId), HistoryOrderPrintVo.class); + List orderDetails = orderDetailService.getOrderDetailPrint(orderId); + Map> resultMap = new HashMap<>(); + // 遍历订单详情列表 + for (OrderDetailPrintVo orderDetail : orderDetails) { + orderDetail.initGift(); + // 获取当前订单详情的 placeNum + Integer placeNum = orderDetail.getPlaceNum(); + // 检查 Map 中是否已经存在该 placeNum 对应的列表 + resultMap.computeIfAbsent(placeNum.toString(), k -> new ArrayList<>()).add(orderDetail); + } + historyOrderVo.setDetailMap(resultMap); + return CzgResult.success(historyOrderVo); + } + @Override public HistoryOrderVo historyOrder(Long orderId, String tableCode) { if (orderId == null && StrUtil.isBlank(tableCode)) { diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java new file mode 100644 index 000000000..9f72b3337 --- /dev/null +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java @@ -0,0 +1,38 @@ +package com.czg.service.order.service.impl; + +import com.czg.order.param.SaleSummaryCountParam; +import com.czg.order.service.SaleSummaryService; +import com.czg.order.vo.SaleSummaryCountVo; +import com.czg.order.vo.SaleSummaryInfoVo; +import com.mybatisflex.core.paginate.Page; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 销量统计Service实现类 + * + * @author tankaikai + * @since 2025-03-07 15:32 + */ +@Service +public class SaleSummaryServiceImpl implements SaleSummaryService { + + @Override + public SaleSummaryCountVo summaryCount(SaleSummaryCountParam param) { + return new SaleSummaryCountVo(); + } + + @Override + public Page summaryPage(SaleSummaryCountParam param) { + Page page = new Page<>(); + page.setRecords(new ArrayList()); + return page; + } + + @Override + public List summaryList(SaleSummaryCountParam param) { + return List.of(); + } +} diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java new file mode 100644 index 000000000..503deb6e8 --- /dev/null +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/TableSummaryServiceImpl.java @@ -0,0 +1,30 @@ +package com.czg.service.order.service.impl; + +import com.czg.order.param.TableSummaryParam; +import com.czg.order.service.TableSummaryService; +import com.czg.order.vo.TableSummaryExportVo; +import com.czg.order.vo.TableSummaryInfoVo; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 台桌统计Service实现类 + * + * @author tankaikai + * @since 2025-03-07 15:32 + */ +@Service +public class TableSummaryServiceImpl implements TableSummaryService { + + + @Override + public List summaryList(TableSummaryParam param) { + return List.of(); + } + + @Override + public List summaryExport(TableSummaryParam param) { + return List.of(); + } +} diff --git a/cash-service/order-service/src/main/resources/mapper/OrderDetailMapper.xml b/cash-service/order-service/src/main/resources/mapper/OrderDetailMapper.xml index 4422e155e..f1ed54773 100644 --- a/cash-service/order-service/src/main/resources/mapper/OrderDetailMapper.xml +++ b/cash-service/order-service/src/main/resources/mapper/OrderDetailMapper.xml @@ -22,4 +22,10 @@ now(), now()) +