package com.bonus.canteen.core.report.statistics.order.summary.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.bonus.canteen.core.common.utils.CustomNumberConverter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDate;

@ContentRowHeight(25)
@HeadRowHeight(25)
@ColumnWidth(25)
@ApiModel("按设备收入汇总")
public class ReportSumMachineMealTimeVO {
   @ExcelProperty(
      value = {"统计日期"},
      order = 1
   )
   @ApiModelProperty("统计日期")
   private LocalDate statisticDate;
   @ApiModelProperty("设备类型")
   private Integer sourceType;
   @ExcelProperty(
      value = {"消费来源"},
      order = 2
   )
   @ApiModelProperty("消费来源(来源类型-设备名称)")
   private String consumeSource;
   @ExcelProperty(
      value = {"设备编号"},
      order = 2
   )
   @ApiModelProperty("设备编号")
   private String deviceNum;
   @JsonIgnore
   @ExcelIgnore
   private String machineSn;
   @ExcelProperty(
      value = {"早餐", "人数"},
      order = 3
   )
   @ApiModelProperty("早餐消费人数")
   private Integer breakfastCustNum;
   @ExcelProperty(
      value = {"早餐", "次数"},
      order = 4
   )
   @ApiModelProperty("早餐消费次数")
   private Integer breakfastConsumeNum;
   @ExcelProperty(
      value = {"早餐", "实付金额"},
      order = 8,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("早餐实付金额 分 （报表中消费退款为负数）")
   private BigDecimal breakfastRealAmount;
   @ExcelProperty(
      value = {"早餐", "应付金额"},
      order = 5,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("早餐应付金额  分")
   private BigDecimal breakfastPayableAmount;
   @ExcelProperty(
      value = {"早餐", "上浮/优惠金额"},
      order = 6,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("早餐优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal breakfastDiscountAmount;
   @ExcelProperty(
      value = {"早餐", "退款金额"},
      order = 7,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("早餐退款金额")
   private BigDecimal breakfastRefundAmount;
   @ExcelProperty(
      value = {"午餐", "人数"},
      order = 10
   )
   @ApiModelProperty("午餐消费人数")
   private Integer lunchCustNum;
   @ExcelProperty(
      value = {"午餐", "次数"},
      order = 11
   )
   @ApiModelProperty("午餐消费次数")
   private Integer lunchConsumeNum;
   @ExcelProperty(
      value = {"午餐", "实付金额"},
      order = 15,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("午餐实付金额 分 （报表中消费退款为负数）")
   private BigDecimal lunchRealAmount;
   @ExcelProperty(
      value = {"午餐", "应付金额"},
      order = 12,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("午餐应付金额  分")
   private BigDecimal lunchPayableAmount;
   @ExcelProperty(
      value = {"午餐", "上浮/优惠金额"},
      order = 13,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("午餐优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal lunchDiscountAmount;
   @ExcelProperty(
      value = {"午餐", "退款金额"},
      order = 14,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("午餐退款金额")
   private BigDecimal lunchRefundAmount;
   @ExcelProperty(
      value = {"下午茶", "人数"},
      order = 16
   )
   @ApiModelProperty("下午茶消费人数")
   private Integer afternoonCustNum;
   @ExcelProperty(
      value = {"下午茶", "次数"},
      order = 17
   )
   @ApiModelProperty("下午茶消费次数")
   private Integer afternoonConsumeNum;
   @ExcelProperty(
      value = {"下午茶", "实付金额"},
      order = 21,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("下午茶实付金额 分 （报表中消费退款为负数）")
   private BigDecimal afternoonRealAmount;
   @ExcelProperty(
      value = {"下午茶", "应付金额"},
      order = 18,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("下午茶应付金额  分")
   private BigDecimal afternoonPayableAmount;
   @ExcelProperty(
      value = {"下午茶", "上浮/优惠金额"},
      order = 19,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("下午茶优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal afternoonDiscountAmount;
   @ExcelProperty(
      value = {"下午茶", "退款金额"},
      order = 20,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("下午茶退款金额")
   private BigDecimal afternoonRefundAmount;
   @ExcelProperty(
      value = {"晚餐", "人数"},
      order = 22
   )
   @ApiModelProperty("晚餐消费人数")
   private Integer dinnerCustNum;
   @ExcelProperty(
      value = {"晚餐", "次数"},
      order = 23
   )
   @ApiModelProperty("晚餐消费次数")
   private Integer dinnerConsumeNum;
   @ExcelProperty(
      value = {"晚餐", "实付金额"},
      order = 27,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("晚餐实付金额 分 （报表中消费退款为负数）")
   private BigDecimal dinnerRealAmount;
   @ExcelProperty(
      value = {"晚餐", "应付金额"},
      order = 24,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("晚餐应付金额  分")
   private BigDecimal dinnerPayableAmount;
   @ExcelProperty(
      value = {"晚餐", "上浮/优惠金额"},
      order = 25,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("晚餐优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal dinnerDiscountAmount;
   @ExcelProperty(
      value = {"晚餐", "退款金额"},
      order = 26,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("晚餐退款金额")
   private BigDecimal dinnerRefundAmount;
   @ExcelProperty(
      value = {"夜宵", "人数"},
      order = 30
   )
   @ApiModelProperty("夜宵消费人数")
   private Integer supperCustNum;
   @ExcelProperty(
      value = {"夜宵", "次数"},
      order = 31
   )
   @ApiModelProperty("夜宵消费次数")
   private Integer supperConsumeNum;
   @ExcelProperty(
      value = {"夜宵", "实付金额"},
      order = 35,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("夜宵实付金额 分 （报表中消费退款为负数）")
   private BigDecimal supperRealAmount;
   @ExcelProperty(
      value = {"夜宵", "应付金额"},
      order = 32,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("夜宵应付金额  分")
   private BigDecimal supperPayableAmount;
   @ExcelProperty(
      value = {"夜宵", "上浮/优惠金额"},
      order = 33,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("夜宵优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal supperDiscountAmount;
   @ExcelProperty(
      value = {"夜宵", "退款金额"},
      order = 34,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("夜宵退款金额")
   private BigDecimal supperRefundAmount;
   @ExcelProperty(
      value = {"其他", "人数"},
      order = 36
   )
   @ApiModelProperty("其他消费人数")
   private Integer otherCustNum;
   @ExcelProperty(
      value = {"其他", "次数"},
      order = 37
   )
   @ApiModelProperty("其他消费次数")
   private Integer otherConsumeNum;
   @ExcelProperty(
      value = {"其他", "实付金额"},
      order = 41,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("其他实付金额 分 （报表中消费退款为负数）")
   private BigDecimal otherRealAmount;
   @ExcelProperty(
      value = {"其他", "应付金额"},
      order = 38,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("其他应付金额  分")
   private BigDecimal otherPayableAmount;
   @ExcelProperty(
      value = {"其他", "上浮/优惠金额"},
      order = 39,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("其他优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal otherDiscountAmount;
   @ExcelProperty(
      value = {"其他", "退款金额"},
      order = 40,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("其他退款金额")
   private BigDecimal otherRefundAmount;
   @ExcelProperty(
      value = {"合计", "人数"},
      order = 42
   )
   @ApiModelProperty("合计消费人数")
   private Integer totalCustNum;
   @ExcelProperty(
      value = {"合计", "次数"},
      order = 43
   )
   @ApiModelProperty("合计消费次数")
   private Integer totalConsumeNum;
   @ExcelProperty(
      value = {"合计", "实付金额"},
      order = 47,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("合计实付金额 分 （报表中消费退款为负数）")
   private BigDecimal totalRealAmount;
   @ExcelProperty(
      value = {"合计", "应付金额"},
      order = 44,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("合计应付金额  分")
   private BigDecimal totalPayableAmount;
   @ExcelProperty(
      value = {"合计", "上浮/优惠金额"},
      order = 45,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("合计优惠金额 分 (餐券抵扣金额不算优惠金额)")
   private BigDecimal totalDiscountAmount;
   @ExcelProperty(
      value = {"合计", "退款金额"},
      order = 46,
      converter = CustomNumberConverter.class
   )
   @ApiModelProperty("合计退款金额 分")
   private BigDecimal totalRefundAmount;

   public LocalDate getStatisticDate() {
      return this.statisticDate;
   }

   public Integer getSourceType() {
      return this.sourceType;
   }

   public String getConsumeSource() {
      return this.consumeSource;
   }

   public String getDeviceNum() {
      return this.deviceNum;
   }

   public String getMachineSn() {
      return this.machineSn;
   }

   public Integer getBreakfastCustNum() {
      return this.breakfastCustNum;
   }

   public Integer getBreakfastConsumeNum() {
      return this.breakfastConsumeNum;
   }

   public BigDecimal getBreakfastRealAmount() {
      return this.breakfastRealAmount;
   }

   public BigDecimal getBreakfastPayableAmount() {
      return this.breakfastPayableAmount;
   }

   public BigDecimal getBreakfastDiscountAmount() {
      return this.breakfastDiscountAmount;
   }

   public BigDecimal getBreakfastRefundAmount() {
      return this.breakfastRefundAmount;
   }

   public Integer getLunchCustNum() {
      return this.lunchCustNum;
   }

   public Integer getLunchConsumeNum() {
      return this.lunchConsumeNum;
   }

   public BigDecimal getLunchRealAmount() {
      return this.lunchRealAmount;
   }

   public BigDecimal getLunchPayableAmount() {
      return this.lunchPayableAmount;
   }

   public BigDecimal getLunchDiscountAmount() {
      return this.lunchDiscountAmount;
   }

   public BigDecimal getLunchRefundAmount() {
      return this.lunchRefundAmount;
   }

   public Integer getAfternoonCustNum() {
      return this.afternoonCustNum;
   }

   public Integer getAfternoonConsumeNum() {
      return this.afternoonConsumeNum;
   }

   public BigDecimal getAfternoonRealAmount() {
      return this.afternoonRealAmount;
   }

   public BigDecimal getAfternoonPayableAmount() {
      return this.afternoonPayableAmount;
   }

   public BigDecimal getAfternoonDiscountAmount() {
      return this.afternoonDiscountAmount;
   }

   public BigDecimal getAfternoonRefundAmount() {
      return this.afternoonRefundAmount;
   }

   public Integer getDinnerCustNum() {
      return this.dinnerCustNum;
   }

   public Integer getDinnerConsumeNum() {
      return this.dinnerConsumeNum;
   }

   public BigDecimal getDinnerRealAmount() {
      return this.dinnerRealAmount;
   }

   public BigDecimal getDinnerPayableAmount() {
      return this.dinnerPayableAmount;
   }

   public BigDecimal getDinnerDiscountAmount() {
      return this.dinnerDiscountAmount;
   }

   public BigDecimal getDinnerRefundAmount() {
      return this.dinnerRefundAmount;
   }

   public Integer getSupperCustNum() {
      return this.supperCustNum;
   }

   public Integer getSupperConsumeNum() {
      return this.supperConsumeNum;
   }

   public BigDecimal getSupperRealAmount() {
      return this.supperRealAmount;
   }

   public BigDecimal getSupperPayableAmount() {
      return this.supperPayableAmount;
   }

   public BigDecimal getSupperDiscountAmount() {
      return this.supperDiscountAmount;
   }

   public BigDecimal getSupperRefundAmount() {
      return this.supperRefundAmount;
   }

   public Integer getOtherCustNum() {
      return this.otherCustNum;
   }

   public Integer getOtherConsumeNum() {
      return this.otherConsumeNum;
   }

   public BigDecimal getOtherRealAmount() {
      return this.otherRealAmount;
   }

   public BigDecimal getOtherPayableAmount() {
      return this.otherPayableAmount;
   }

   public BigDecimal getOtherDiscountAmount() {
      return this.otherDiscountAmount;
   }

   public BigDecimal getOtherRefundAmount() {
      return this.otherRefundAmount;
   }

   public Integer getTotalCustNum() {
      return this.totalCustNum;
   }

   public Integer getTotalConsumeNum() {
      return this.totalConsumeNum;
   }

   public BigDecimal getTotalRealAmount() {
      return this.totalRealAmount;
   }

   public BigDecimal getTotalPayableAmount() {
      return this.totalPayableAmount;
   }

   public BigDecimal getTotalDiscountAmount() {
      return this.totalDiscountAmount;
   }

   public BigDecimal getTotalRefundAmount() {
      return this.totalRefundAmount;
   }

   public ReportSumMachineMealTimeVO setStatisticDate(final LocalDate statisticDate) {
      this.statisticDate = statisticDate;
      return this;
   }

   public ReportSumMachineMealTimeVO setSourceType(final Integer sourceType) {
      this.sourceType = sourceType;
      return this;
   }

   public ReportSumMachineMealTimeVO setConsumeSource(final String consumeSource) {
      this.consumeSource = consumeSource;
      return this;
   }

   public ReportSumMachineMealTimeVO setDeviceNum(final String deviceNum) {
      this.deviceNum = deviceNum;
      return this;
   }

   @JsonIgnore
   public ReportSumMachineMealTimeVO setMachineSn(final String machineSn) {
      this.machineSn = machineSn;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastCustNum(final Integer breakfastCustNum) {
      this.breakfastCustNum = breakfastCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastConsumeNum(final Integer breakfastConsumeNum) {
      this.breakfastConsumeNum = breakfastConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastRealAmount(final BigDecimal breakfastRealAmount) {
      this.breakfastRealAmount = breakfastRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastPayableAmount(final BigDecimal breakfastPayableAmount) {
      this.breakfastPayableAmount = breakfastPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastDiscountAmount(final BigDecimal breakfastDiscountAmount) {
      this.breakfastDiscountAmount = breakfastDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setBreakfastRefundAmount(final BigDecimal breakfastRefundAmount) {
      this.breakfastRefundAmount = breakfastRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchCustNum(final Integer lunchCustNum) {
      this.lunchCustNum = lunchCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchConsumeNum(final Integer lunchConsumeNum) {
      this.lunchConsumeNum = lunchConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchRealAmount(final BigDecimal lunchRealAmount) {
      this.lunchRealAmount = lunchRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchPayableAmount(final BigDecimal lunchPayableAmount) {
      this.lunchPayableAmount = lunchPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchDiscountAmount(final BigDecimal lunchDiscountAmount) {
      this.lunchDiscountAmount = lunchDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setLunchRefundAmount(final BigDecimal lunchRefundAmount) {
      this.lunchRefundAmount = lunchRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonCustNum(final Integer afternoonCustNum) {
      this.afternoonCustNum = afternoonCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonConsumeNum(final Integer afternoonConsumeNum) {
      this.afternoonConsumeNum = afternoonConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonRealAmount(final BigDecimal afternoonRealAmount) {
      this.afternoonRealAmount = afternoonRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonPayableAmount(final BigDecimal afternoonPayableAmount) {
      this.afternoonPayableAmount = afternoonPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonDiscountAmount(final BigDecimal afternoonDiscountAmount) {
      this.afternoonDiscountAmount = afternoonDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setAfternoonRefundAmount(final BigDecimal afternoonRefundAmount) {
      this.afternoonRefundAmount = afternoonRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerCustNum(final Integer dinnerCustNum) {
      this.dinnerCustNum = dinnerCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerConsumeNum(final Integer dinnerConsumeNum) {
      this.dinnerConsumeNum = dinnerConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerRealAmount(final BigDecimal dinnerRealAmount) {
      this.dinnerRealAmount = dinnerRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerPayableAmount(final BigDecimal dinnerPayableAmount) {
      this.dinnerPayableAmount = dinnerPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerDiscountAmount(final BigDecimal dinnerDiscountAmount) {
      this.dinnerDiscountAmount = dinnerDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setDinnerRefundAmount(final BigDecimal dinnerRefundAmount) {
      this.dinnerRefundAmount = dinnerRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperCustNum(final Integer supperCustNum) {
      this.supperCustNum = supperCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperConsumeNum(final Integer supperConsumeNum) {
      this.supperConsumeNum = supperConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperRealAmount(final BigDecimal supperRealAmount) {
      this.supperRealAmount = supperRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperPayableAmount(final BigDecimal supperPayableAmount) {
      this.supperPayableAmount = supperPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperDiscountAmount(final BigDecimal supperDiscountAmount) {
      this.supperDiscountAmount = supperDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setSupperRefundAmount(final BigDecimal supperRefundAmount) {
      this.supperRefundAmount = supperRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherCustNum(final Integer otherCustNum) {
      this.otherCustNum = otherCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherConsumeNum(final Integer otherConsumeNum) {
      this.otherConsumeNum = otherConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherRealAmount(final BigDecimal otherRealAmount) {
      this.otherRealAmount = otherRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherPayableAmount(final BigDecimal otherPayableAmount) {
      this.otherPayableAmount = otherPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherDiscountAmount(final BigDecimal otherDiscountAmount) {
      this.otherDiscountAmount = otherDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setOtherRefundAmount(final BigDecimal otherRefundAmount) {
      this.otherRefundAmount = otherRefundAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalCustNum(final Integer totalCustNum) {
      this.totalCustNum = totalCustNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalConsumeNum(final Integer totalConsumeNum) {
      this.totalConsumeNum = totalConsumeNum;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalRealAmount(final BigDecimal totalRealAmount) {
      this.totalRealAmount = totalRealAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalPayableAmount(final BigDecimal totalPayableAmount) {
      this.totalPayableAmount = totalPayableAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalDiscountAmount(final BigDecimal totalDiscountAmount) {
      this.totalDiscountAmount = totalDiscountAmount;
      return this;
   }

   public ReportSumMachineMealTimeVO setTotalRefundAmount(final BigDecimal totalRefundAmount) {
      this.totalRefundAmount = totalRefundAmount;
      return this;
   }

}
