Merge remote-tracking branch 'origin/master'

This commit is contained in:
张松
2025-03-07 18:31:37 +08:00
32 changed files with 1420 additions and 5 deletions

View File

@@ -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<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId) {
return orderInfoService.getOrderByIdPrint(orderId);
}
@GetMapping("/historyOrder")
public CzgResult<HistoryOrderVo> 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<Object> mergeOrder(@Validated @RequestBody OrderInfoRefundDTO refundDTO) {
//
// }
/**
* 订单全额退款 只传订单id
* 部分退款 传参refundDetail

View File

@@ -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<DataSummaryTradeVo> 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<DataSummaryProductSaleVo> 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<DataSummaryDateAmountVo> 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);
}
}

View File

@@ -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<SaleSummaryCountVo> 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<Page<SaleSummaryInfoVo>> summaryPage(SaleSummaryCountParam param) {
Long shopId = StpKit.USER.getShopId(0L);
param.setShopId(shopId);
Page<SaleSummaryInfoVo> page = saleSummaryService.summaryPage(param);
return CzgResult.success(page);
}
/**
* 导出
*/
@ResponseExcel(name = "销售统计明细")
@GetMapping("/export")
@OperationLog("导出")
//@SaAdminCheckPermission("saleSummary:export")
public List<SaleSummaryInfoVo> summaryExport(SaleSummaryCountParam param) {
return saleSummaryService.summaryList(param);
}
}

View File

@@ -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<List<TableSummaryInfoVo>> summaryList(TableSummaryParam param) {
Long shopId = StpKit.USER.getShopId(0L);
param.setShopId(shopId);
List<TableSummaryInfoVo> data = tableSummaryService.summaryList(param);
return CzgResult.success(data);
}
/**
* 导出
*/
@ResponseExcel(name = "台桌统计")
@GetMapping("export")
@OperationLog("导出")
//@SaAdminCheckPermission("tableSummary:export")
public List<TableSummaryExportVo> summaryExport(TableSummaryParam param) {
return tableSummaryService.summaryExport(param);
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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<OrderDetail> {
void createOrderDetails(Long orderId, List<OrderDetail> orderDetails);
List<OrderDetailPrintVo> getOrderDetailPrint(Long orderId);
}

View File

@@ -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<OrderInfo> {
Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param);
CzgResult<HistoryOrderVo> getOrderDetails(Long orderId);
CzgResult<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId);
HistoryOrderVo historyOrder(Long orderId, String tableCode);

View File

@@ -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<SaleSummaryInfoVo> summaryPage(SaleSummaryCountParam param);
List<SaleSummaryInfoVo> summaryList(SaleSummaryCountParam param);
}

View File

@@ -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<TableSummaryInfoVo> summaryList(TableSummaryParam param);
List<TableSummaryExportVo> summaryExport(TableSummaryParam param);
}

View File

@@ -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<TotalVo> total;
/**
* TotalVo
*/
@NoArgsConstructor
@Data
public static class TotalVo {
/**
* 实收金额
*/
private Integer actualAmount;
/**
* 优惠金额
*/
private Integer discountAmount;
/**
* 订单金额
*/
private Integer orderAmount;
/**
* 日期
*/
private String tradeDay;
}
}

View File

@@ -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<CountPayTypeVo> countPayType;
/**
* CountPayTypeVo
*/
@NoArgsConstructor
@Data
public static class CountPayTypeVo {
/**
* 笔数
*/
private Integer count;
/**
* 支付方式
*/
private String payType;
}
}

View File

@@ -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<CountListVo> countList;
/**
* productCount
*/
private ProductCountVo productCount;
/**
* productList
*/
private Page<ContentVo> 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;
}
}

View File

@@ -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<PayCountVo> 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;
}
}

View File

@@ -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<String, List<OrderDetailPrintVo>> detailMap;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<SkusVo> 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;
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<OrderDetail> {
void createOrderDetails(@Param("orderId") Long orderId,@Param("orderDetails") List<OrderDetail> orderDetails);
List<OrderDetailPrintVo> getOrderDetailPrint(Long orderId);
}

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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<OrderDetailMapper, OrderDetail> implements OrderDetailService{
public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, OrderDetail> implements OrderDetailService {
@Override
public void createOrderDetails(Long orderId, List<OrderDetail> orderDetails) {
getMapper().createOrderDetails(orderId, orderDetails);
}
@Override
public List<OrderDetailPrintVo> getOrderDetailPrint(Long orderId) {
return getMapper().getOrderDetailPrint(orderId);
}
}

View File

@@ -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<OrderInfoMapper, OrderInfo
return CzgResult.success(historyOrder(orderId, null));
}
@Override
public CzgResult<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId) {
HistoryOrderPrintVo historyOrderVo = getOneAs(new QueryWrapper()
.eq(OrderInfo::getId, orderId), HistoryOrderPrintVo.class);
List<OrderDetailPrintVo> orderDetails = orderDetailService.getOrderDetailPrint(orderId);
Map<String, List<OrderDetailPrintVo>> 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)) {

View File

@@ -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<SaleSummaryInfoVo> summaryPage(SaleSummaryCountParam param) {
Page<SaleSummaryInfoVo> page = new Page<>();
page.setRecords(new ArrayList<SaleSummaryInfoVo>());
return page;
}
@Override
public List<SaleSummaryInfoVo> summaryList(SaleSummaryCountParam param) {
return List.of();
}
}

View File

@@ -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<TableSummaryInfoVo> summaryList(TableSummaryParam param) {
return List.of();
}
@Override
public List<TableSummaryExportVo> summaryExport(TableSummaryParam param) {
return List.of();
}
}

View File

@@ -22,4 +22,10 @@
now(), now())
</foreach>
</insert>
<select id="getOrderDetailPrint" resultType="com.czg.order.vo.OrderDetailPrintVo">
select detail.*, product.category_id as categoryId
from tb_order_detail detail
left join tb_product product on product.id = detail.product_id
where order_id = #{orderId}
</select>
</mapper>