package com.ssm.manage.query;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ssm.manage.entity.AccountTradeRecord;
import com.ssm.manage.entity.PayList;
import com.ssm.manage.entity.ServiceProject;
import com.ssm.manage.page.BasePage;
import com.ssm.manage.response.RechargeAccountResponse;
import com.ssm.manage.utils.DateUtils;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * (ServiceOrders)实体类
 *
 * @author makejava
 * @since 2022-04-12 17:07:58
 */


@Setter
@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
@Table(name = "service_orders_${tab}")
public class ServiceOrdersRequest extends BasePage implements Serializable {
    private static final long serialVersionUID = 866715333144010947L;
    /**
     * id
     */
    private Long id;
    /**
     * 房间id
     */
    private Long roomId;
    /**
     * 房间编码
     */
    private String roomNum;
    /**
     * 房间名称
     */
    private String roomName;
    /**
     * 房间手牌(床位)id
     */
    private Long roomHandId;
    /**
     * 服务开始时间（上钟）
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date serviceStartDate;
    /**
     * 是否会员 1：是；0：否
     */
    private Integer cashNumber;
    /**
     * 会员编码
     */
    private Long memberId;
    /**
     * 会员名称
     */
    private String memberName;
    /**
     * 会员手机号
     */
    private String mobilePhone;
    /**
     * 会员身份证号
     */
    private String memberIdentityCard;
    /**
     * 会员卡
     */
    private String card;
    /**
     * 项目编码
     */
    private Long projectId;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 门店编码
     */
    private Long storeId;
    /**
     * 门店名称
     */
    private String storeName;
    /**
     * 散客价
     */
    private BigDecimal price;
    /**
     * 散客最低价
     */
    private BigDecimal minumumPrice;
    /**
     * 会员价
     */
    private BigDecimal priceMember;
    /**
     * 会员最低价
     */
    private BigDecimal minumumPriceMember;
    /**
     * 项目成交单价
     */
    private BigDecimal transactionPrice;
    /**
     * 次数
     */
    private Integer numberTimes;
    /**
     * 服务金额=项目成交单价*次数
     */
    private BigDecimal amount;
    /**
     * 现付金额
     */
    private BigDecimal collectionCashAmount;
    /**
     * 积分金额
     */
    private BigDecimal collectionIntegralAmount;
    /**
     * 使用积分
     */
    private Integer integral;
    /**
     * 消费赠送积分
     */
    private Integer giveIntegral;
    /**
     * 卡付金额
     */
    private BigDecimal collectionRechargeAmount;
    /**
     * 赠品支付
     */
    private Integer collectionGiftAmount;
    /**
     * 实收总额
     */
    private BigDecimal cashAmount;
    /**
     * 大工现付业绩标准
     */
    private BigDecimal achievementLarge;
    /**
     * 中工现付业绩标准
     */
    private BigDecimal achievementZhonggong;
    /**
     * 技师现付业绩标准
     */
    private BigDecimal achievementTechnician;
    /**
     * 助理现付业绩标准
     */
    private BigDecimal achievementSmall;
    /**
     * 大工现付提成标准
     */
    private BigDecimal commissionLarge;
    /**
     * 中工现付提成标准
     */
    private BigDecimal commissionZhonggong;
    /**
     * 技师现付提成标准
     */
    private BigDecimal commissionTechnician;
    /**
     * 助理现付提成标准
     */
    private BigDecimal commissionSmall;
    /**
     * 卡付大工业绩标准
     */
    private BigDecimal cardAchievementLarge;
    /**
     * 卡付中工业绩标准
     */
    private BigDecimal cardAchievementZhonggong;
    /**
     * 卡付技师业绩标准
     */
    private BigDecimal cardAchievementTechnician;
    /**
     * 卡付助理业绩标准
     */
    private BigDecimal cardAchievementSmall;
    /**
     * 卡付大工提成标准
     */
    private BigDecimal cardCommissionLarge;
    /**
     * 卡付中工提成标准
     */
    private BigDecimal cardCommissionZhonggong;
    /**
     * 卡付技师提成标准
     */
    private BigDecimal cardCommissionTechnician;
    /**
     * 卡付助理提成标准
     */
    private BigDecimal cardCommissionSmall;
    /**
     * 技师1水牌号
     */
    private String technicianOneNumber;
    /**
     * 技师1编码（来源于员工档案）
     */
    private Long serviceTechnicianOneStaffId;
    /**
     * 技师1名称（来源于员工档案）
     */
    private String serviceTechnicianOneStaffName;
    /**
     * 技师1身份证号（来源于员工档案）
     */
    private String serviceTechnicianOneIdentityCard;
    /**
     * 技师1业绩
     */
    private BigDecimal serviceTechnicianOneAchievementAmount;
    /**
     * 技师1提成
     */
    private BigDecimal serviceTechnicianOneCommissionAmount;
    /**
     * 技师1占比
     */
    private BigDecimal serviceTechnicianOneRatio;
    /**
     * 赠送支付金额
     */
    private BigDecimal paymentAmount;
    /**
     * 结算编码
     */
    private String settlementNum;
    /**
     * 结算id
     */
    private Long settlementId;
    /**
     * 状态：0=正常，1=作废
     */
    private Integer state;
//    /**
//     * 手牌序号
//     */
//    private Integer order;
    /**
     * 服务结束时间（下钟）
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date serviceEndDate;
    /**
     * 服务时长（时分秒）
     */
    private String servicingTime;
    /**
     * 服务时长（时分秒）
     */
    private String practicalServicingTime;
    /**
     * 录单人ID
     */
    private Long inputId;
    /**
     * 录单人名称
     */
    private String inputBy;
    /**
     * 录单时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inputDate;
    /**
     * 修改人ID
     */
    private Long updateId;
    /**
     * 修改人名称
     */
    private String updateBy;
    /**
     * 修改时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateDate;
    /**
     * 查询日期
     */
    private String selectDate;

    /**
     * 单据时间
     */
    @Column(name = "doc_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date docDate;
    /**
     * 单据状态
     */
    private Integer docState;


    /**
     * 会员消费是否打折
     */
    @Column(name = "no_discount")
    private Integer noDiscount;
    /**
     * 会员消费是否打折
     */
    @Column(name = "course_account_id")
    private Long courseAccountId;

    /**
     * 加钟固定时间：分钟（取整）
     */
    @Column(name = "overtime")
    private Integer overtime;
    /**
     * 加钟固定金额：金额
     */
    @Column(name = "overtime_money")
    private BigDecimal overtimeMoney;

    /**
     * 加钟固定金额：金额
     */
    @Column(name = "project_num")
    private String projectNum;

    /**
     * 加钟（0=正常，1=加钟）
     */
    @Column(name = "renew")
    private Integer renew;

    /**
     * 手牌编码
     */
    @Column(name = "room_hand_num")
    private String roomHandNum;



    //支付方式列表
    private List<PayList> payLists;

    //充值卡付列表
    private List<RechargeAccountRequest> rechargeAccountList;
    private List<AccountTradeRecord> accountTradeRecords;
    List<RechargeAccountResponse> rechargeAccountResponses;




    /**
     * 职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     */
    @Column(name = "grade")
    private Integer grade;

    /**
     * 推销人员工编码
     */
    @Column(name = "staff_num")
    private String staffNum;

    /**
     * 推销人员工名称
     */
    @Column(name = "staff_name")
    private String staffName;
    /**
     * 推销人员工水牌号
     */
    @Column(name = "brand_number")
    private String brandNumber;

    /**
     * 推销人员工Id
     */
    @Column(name = "staff_id")
    private Long staffId;

    /**
     * 推销提成点
     */
    @Column(name = "market_comm")
    private BigDecimal marketComm;


    /**
     * 点钟提成点
     */
    @Column(name = "clock_comm")
    private BigDecimal clockComm;


    /**
     * 轮钟提成
     */
    @Column(name = "Round_clock_comm")
    private BigDecimal roundClockComm;


    /**
     * 是否点钟,0=否，1=是
     */
    @Column(name = "is_clock")
    private Integer isClock;

    /**
     * 男客
     */
    @Column(name = "man")
    private Integer man;
    /**
     * 女客
     */
    @Column(name = "woman")
    private Integer woman;


    /**
     * 数据性质，0=项目，1=商品
     */
    @Column(name = "project_nature")
    private Integer projectNature;


    /**
     * 推销提成点
     */
    @Column(name = "card_market_comm")
    private BigDecimal cardMarketComm;


    /**
     * 点钟提成点
     */
    @Column(name = "card_clock_comm")
    private BigDecimal cardClockComm;


    /**
     * 轮钟提成
     */
    @Column(name = "card_Round_clock_comm")
    private BigDecimal cardRoundClockComm;

    private String dateStr;

    /**
     * 商品现付提成
     */
    @Column(name = "commodity_cash")
    private BigDecimal commodityCash;

    /**
     * 商品卡付提成
     */
    @Column(name = "commodity_card")
    private BigDecimal commodityCard;

    @JsonIgnore
    public String getTab(){
        return DateUtils.YMFormat(docDate);
    }

}

