package com.qunzhixinxi.hnqz.admin.entity.model.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 积分包结算-导出excel模型
 *
 * @author lixuesong
 * @date 2021年07月12日 14:28
 */
@Data
public class WmScorePackageSettleExcelModel {

	@ColumnWidth(10)
	@ExcelProperty("序号")
	private Integer number;

	/**
	 * 积分包名称
	 */
	@ColumnWidth(40)
	@ExcelProperty("积分包名称")
	private String scorePackageName;

	/**
	 * 积分包类型
	 */
	@ColumnWidth(15)
	@ExcelProperty("积分包类型")
	private String packageType1;

	/**
	 * 发包机构
	 */
	@ColumnWidth(15)
	@ExcelProperty("发包机构")
	private String packageEntName;

	/**
	 * 发包时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("发包时间")
	private LocalDateTime createTime;

	/**
	 * 积分包完成状态
	 */
	@ColumnWidth(15)
	@ExcelProperty("积分包状态")
	private String packageFinishStatus;

	/**
	 * 积分包值
	 */
	@ColumnWidth(15)
	@ExcelProperty("积分包值")
	private String score;

	/**
	 * 结算渠道
	 */
	@ColumnWidth(15)
	@ExcelProperty("结算渠道")
	private String subType;

	/**
	 * 发票类目
	 */
	@ColumnWidth(15)
	@ExcelProperty("发票类目")
	private String invoiceCategory;

	/**
	 * 结算人员
	 */
	@ColumnWidth(15)
	@ExcelProperty("结算人员")
	private String userNames;

	/**
	 * 实际结算金额
	 */
	@ColumnWidth(20)
	@ExcelProperty("实际结算金额")
	private BigDecimal settleAmount;

	/**
	 * 结算状态
	 */
	@ColumnWidth(15)
	@ExcelProperty("结算状态")
	private String settleStatus;

	/**
	 * 结算成功时间
	 */
	@ColumnWidth(20)
	@ExcelProperty("结算成功时间")
	private String belongDate;

	/**
	 *  结算渠道
	 */
	@Getter
	@AllArgsConstructor
	public enum CategoryEnum {
		//
		CATEGORY_1(1, "推广服务费"),
		CATEGORY_2(2, "营销服务费"),
		CATEGORY_3(3, "信息服务费"),
		CATEGORY_4(4, "专业技术服务"),
		CATEGORY_12(12, "健康咨询服务费"),
		CATEGORY_NULL(-1, ""),
		;

		/**
		 * 类型
		 */
		private final Integer code;

		/**
		 * 描述
		 */
		private final String desc;

		public static CategoryEnum resolve(Integer val) {
			for (CategoryEnum categoryEnum: CategoryEnum.values()){
				if (categoryEnum.code.equals(val)){
					return categoryEnum;
				}
			}
			return CATEGORY_NULL;
		}

	}

	/**
	 *  结算渠道
	 */
	@Getter
	@AllArgsConstructor
	public enum DingCategoryEnum {

		CATEGORY_30(30, "市场推广服务"),
		CATEGORY_70(70, "其他咨询服务"),
		CATEGORY_77(77, "技术咨询划服务"),
		CATEGORY_203(203, "现场辅助服务"),
		CATEGORY_3(3, "现代服务*技术咨询服务费"),
		CATEGORY_4(4, "现代服务*其他咨询服务费"),
		CATEGORY_5(5, "现代服务*现场辅助服务费"),
		CATEGORY_7(7, "现代服务*推广服务费"),
		CATEGORY_NULL(-1, ""),
		;

		/**
		 * 类型
		 */
		private final Integer code;

		/**
		 * 描述
		 */
		private final String desc;

		public static DingCategoryEnum resolve(Integer val) {
			for (DingCategoryEnum categoryEnum: DingCategoryEnum.values()){
				if (categoryEnum.code.equals(val)){
					return categoryEnum;
				}
			}
			return CATEGORY_NULL;
		}

	}
}
