package com.czg.order.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;

/**
 * 财务统计数据
 * @author yjjie
 * @date 2026/2/2 09:34
 */
@Data
@Accessors(chain = true)
public class FinanceStsDTO {

    /**
     * 日期
     */
    private String date;

    /**
     * 营业额
     */
    private TurnoverSts turnover;

    /**
     * 订单
     */
    private OrderSts order;

    /**
     * 优惠金额
     */
    private DiscountSts discount;

    /**
     * 退款
     */
    private RefundSts refund;

    /**
     * 数据统计
     */
    private Sts sts;

    /**
     * 营业额 类
     */
    @Data
    @Accessors(chain = true)
    public static class TurnoverSts {

        /**
         * 营业额
         */
        private BigDecimal turnover;

        /**
         * 微信支付金额
         */
        private BigDecimal wechat;

        /**
         * 支付宝支付金额
         */
        private BigDecimal alipay;

        /**
         * 二维码收款
         */
        private BigDecimal selfScan;
        /**
         * 扫码收款
         */
        private BigDecimal barScan;

        /**
         * 现金收款
         */
        private BigDecimal cash;

        /**
         * 充值
         */
        private BigDecimal recharge;

        /**
         * 挂账
         */
        private BigDecimal owed;

        /**
         * 余额支付
         */
        private BigDecimal balance;
    }

    /**
     * 订单 类
     */
    @Data
    @Accessors(chain = true)
    public static class OrderSts {
        /**
         * 订单金额
         */
        private BigDecimal orderAmount;

        /**
         * 订单总数
         */
        private Long orderCount;
    }

    /**
     * 优惠金额 类
     */
    @Data
    @Accessors(chain = true)
    public static class DiscountSts {
        /**
         * 优惠金额
         */
        private BigDecimal discountAmount;

        /**
         * 优惠笔数
         */
        private Long discountCount;

        /**
         * 新客立减
         */
        private BigDecimal newConsumerDiscount;

        /**
         * 霸王餐
         */
        private BigDecimal freeCashAmount;

        /**
         * 满减活动
         */
        private BigDecimal fullMinusAmount;

        /**
         * 优惠券
         */
        private BigDecimal couponAmount;

        /**
         * 会员折扣
         */
        private BigDecimal memberDiscount;

        /**
         * 积分抵扣金额
         */
        private BigDecimal pointsDiscountAmount;

        /**
         * 订单改价
         */
        private BigDecimal orderDiscount;
    }

    /**
     * 退款 类
     */
    @Data
    @Accessors(chain = true)
    public static class RefundSts {

        /**
         * 退款金额
         */
        private BigDecimal refundAmount;

        /**
         * 线上退款金额
         */
        private BigDecimal onlineRefundAmount;

        /**
         * 现金退款金额
         */
        private BigDecimal cashRefundAmount;
        /**
         * 挂账退款金额
         */
        private BigDecimal creditRefundAmount;

        /**
         * 充值退款金额
         */
        private BigDecimal rechargeRefundAmount;

        /**
         * 线上充值退款金额
         */
        private BigDecimal onlineRechargeRefundAmount;

        /**
         * 现金充值退款金额
         */
        private BigDecimal cashRechargeRefundAmount;

        /**
         * 会员退款金额
         */
        private BigDecimal memberRefundAmount;
    }

    /**
     * 数据统计 类
     */
    @Data
    @Accessors(chain = true)
    public static class Sts {
        /**
         * 就餐人数
         */
        private Long customerCount;
        /**
         * 订单数
         */
        private Long orderCount;
        /**
         * 桌台数
         */
        private Long tableCount;
        /**
         * 客单价
         * 实付金额(包含现金支付 包含会员支付 包含挂账)/就餐人数
         * 没有具体人数时，默认一桌按照1人计算
         */
        private BigDecimal avgPayAmount;
        /**
         * 翻台率
         * （订单数-桌台数）/桌台数*100%
         */
        private BigDecimal turnoverRate;

        /**
         * 毛利润（订单实付金额-商品成本）
         */
        private BigDecimal profitAmount;
        /**
         * 商品成本
         */
        private BigDecimal productCostAmount;
        /**
         * 毛利率（订单实付金额-商品成本）/订单实付金额*100%
         */
        private BigDecimal profitRate;
        /**
         * 净利润
         */
        private BigDecimal netProfitAmount;
        /**
         * 净利润率
         */
        private BigDecimal netProfitRate;
    }
}
