package com.bonus.canteen.core.report.statistics.order.analysis.param;

import cn.hutool.core.collection.CollUtil;
import com.bonus.canteen.core.report.statistics.order.basic.dto.ReportOrderInfoDTO;
import com.bonus.canteen.core.report.statistics.param.ReportBaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDate;
import java.util.List;

@ApiModel("菜品销售排行入参")
public class ReportAnalysisDishesSaleParam extends ReportBaseParam {
   @ApiModelProperty("食堂id")
   private Long canteenId;
   @ApiModelProperty("档口id")
   private Long stallId;
   @ApiModelProperty("食堂档口id集合")
   private List<Long> canteenStallIds;
   @ApiModelProperty("食堂档口类型 1-食堂 2-档口")
   private Integer treeType;
   @ApiModelProperty("组织id")
   private Long orgId;
   @ApiModelProperty("类别:1 菜品 2 套餐 3 商品 4 按键 5 补扣 6 报餐")
   private Integer detailType;
   @ApiModelProperty("关键字：菜品编号、名称")
   private String keyword;
   @ApiModelProperty("集合:1 菜品 2 套餐 3 商品 4 按键 5 补扣 6 报餐")
   private List<Integer> detailTypes;
   @ApiModelProperty("菜品id集合")
   private List<Long> dishesIds;
   @ApiModelProperty("餐次")
   private Integer mealtimeType;
   @ApiModelProperty("区域id")
   private Long areaId;
   @ApiModelProperty("区域id集合")
   private List<Long> areaIdList;

   public ReportAnalysisDishesSaleParam(ReportOrderInfoDTO baseInfo, LocalDate statisticDate) {
      this.canteenId = baseInfo.getReportOrderInfo().getCanteenId();
      this.stallId = baseInfo.getReportOrderInfo().getStallId();
      this.orgId = baseInfo.getReportOrderInfo().getOrgId();
      this.startDate = statisticDate;
      this.endDate = statisticDate;
      this.ageTypes = CollUtil.newArrayList(new Integer[]{baseInfo.getReportOrderInfo().getAgeType()});
      this.dishesIds = baseInfo.getDishesIds();
      this.mealtimeType = baseInfo.getReportOrderInfo().getMealtimeType();
   }

   public Long getCanteenId() {
      return this.canteenId;
   }

   public Long getStallId() {
      return this.stallId;
   }

   public List<Long> getCanteenStallIds() {
      return this.canteenStallIds;
   }

   public Integer getTreeType() {
      return this.treeType;
   }

   public Long getOrgId() {
      return this.orgId;
   }

   public Integer getDetailType() {
      return this.detailType;
   }

   public String getKeyword() {
      return this.keyword;
   }

   public List<Integer> getDetailTypes() {
      return this.detailTypes;
   }

   public List<Long> getDishesIds() {
      return this.dishesIds;
   }

   public Integer getMealtimeType() {
      return this.mealtimeType;
   }

   public Long getAreaId() {
      return this.areaId;
   }

   public List<Long> getAreaIdList() {
      return this.areaIdList;
   }

   public ReportAnalysisDishesSaleParam setCanteenId(final Long canteenId) {
      this.canteenId = canteenId;
      return this;
   }

   public ReportAnalysisDishesSaleParam setStallId(final Long stallId) {
      this.stallId = stallId;
      return this;
   }

   public ReportAnalysisDishesSaleParam setCanteenStallIds(final List<Long> canteenStallIds) {
      this.canteenStallIds = canteenStallIds;
      return this;
   }

   public ReportAnalysisDishesSaleParam setTreeType(final Integer treeType) {
      this.treeType = treeType;
      return this;
   }

   public ReportAnalysisDishesSaleParam setOrgId(final Long orgId) {
      this.orgId = orgId;
      return this;
   }

   public ReportAnalysisDishesSaleParam setDetailType(final Integer detailType) {
      this.detailType = detailType;
      return this;
   }

   public ReportAnalysisDishesSaleParam setKeyword(final String keyword) {
      this.keyword = keyword;
      return this;
   }

   public ReportAnalysisDishesSaleParam setDetailTypes(final List<Integer> detailTypes) {
      this.detailTypes = detailTypes;
      return this;
   }

   public ReportAnalysisDishesSaleParam setDishesIds(final List<Long> dishesIds) {
      this.dishesIds = dishesIds;
      return this;
   }

   public ReportAnalysisDishesSaleParam setMealtimeType(final Integer mealtimeType) {
      this.mealtimeType = mealtimeType;
      return this;
   }

   public ReportAnalysisDishesSaleParam setAreaId(final Long areaId) {
      this.areaId = areaId;
      return this;
   }

   public ReportAnalysisDishesSaleParam setAreaIdList(final List<Long> areaIdList) {
      this.areaIdList = areaIdList;
      return this;
   }

   public String toString() {
      Long var10000 = this.getCanteenId();
      return "ReportAnalysisDishesSaleParam(canteenId=" + var10000 + ", stallId=" + this.getStallId() + ", canteenStallIds=" + String.valueOf(this.getCanteenStallIds()) + ", treeType=" + this.getTreeType() + ", orgId=" + this.getOrgId() + ", detailType=" + this.getDetailType() + ", keyword=" + this.getKeyword() + ", detailTypes=" + String.valueOf(this.getDetailTypes()) + ", dishesIds=" + String.valueOf(this.getDishesIds()) + ", mealtimeType=" + this.getMealtimeType() + ", areaId=" + this.getAreaId() + ", areaIdList=" + String.valueOf(this.getAreaIdList()) + ")";
   }

   public ReportAnalysisDishesSaleParam(final Long canteenId, final Long stallId, final List<Long> canteenStallIds, final Integer treeType, final Long orgId, final Integer detailType, final String keyword, final List<Integer> detailTypes, final List<Long> dishesIds, final Integer mealtimeType, final Long areaId, final List<Long> areaIdList) {
      this.canteenId = canteenId;
      this.stallId = stallId;
      this.canteenStallIds = canteenStallIds;
      this.treeType = treeType;
      this.orgId = orgId;
      this.detailType = detailType;
      this.keyword = keyword;
      this.detailTypes = detailTypes;
      this.dishesIds = dishesIds;
      this.mealtimeType = mealtimeType;
      this.areaId = areaId;
      this.areaIdList = areaIdList;
   }

   public ReportAnalysisDishesSaleParam() {
   }

}
