package cn.superdesk.uniorder.dto.param.invoice.customer;

import cn.superdesk.uniorder.common.pagination.AnBaseQueryCriteria;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.List;

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 2022/3/3 下午7:30
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022/3/3 下午7:30
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder(toBuilder = true)
public class InvoiceApplyCustomerQueryCriteriaV2_1 extends AnBaseQueryCriteria {

//	对账单编号 请输入对账单编号 private String     accountingOrderSn;
//	开票申请编号 请输入开票申请编号
//
//	企业名称
//	发票号
//	申请人
//	开票人
//
//	申请状态 请选择
//	发票种类 请选择
//	开票方式 请选择
//	开票状态 请选择
//
//	申请时间
//	开票时间


    /****************************************** 导出专用 start ******************************************/

    @ApiModelProperty("有逻辑 侨城汇\n" +
            "\t//\t|---- 1. 搜索框 条件 结算集 积分结算2.1 已经弃了\n" +
            "\t//\t|---- 2. 搜索框 条件 结算集 后 界面上 勾选 要以 开票申请编号 分 sheet 分合并前 合并后\n" +
            "\t//\t|---- 3. 搜索框 条件 结算集 后 界面上 勾选 要以 开票申请编号 分 sheet 财务专用")
    private Integer mode;

    @JsonProperty("invoiceApplyIds")
    @ApiModelProperty("invoiceApplyIds")
    private List<Long> ids;
    @ApiModelProperty("请输入导出开票申请的标题内容")
    private String     remark;

    /****************************************** 导出专用   end ******************************************/

    @ApiModelProperty("2.5.3.3 发票号 填写税局发票号 原先字段名为 invNumber ---- 对比前端 - 已弃用 - 20220303") // 修改标记 20211201
    private String invoiceNumber;


//	@ApiModelProperty("关键字段 查询 取值范围 [invoice_number,invoice_apply_sn,accountingOrderSn,apply_user_name,audit_user_name,company_name] 已弃用 [order_sn]")
//	private String keywordsField;
//	@ApiModelProperty("关键字段值 查询")
//	private String keywords;

    @ApiModelProperty("invoiceApplyId")
    private Long   id;
    @ApiModelProperty("2.5.3.2 开票申请编号")
    private String invoiceApplySn;

    @ApiModelProperty("下单人企业")
    private String companyName;

    @ApiModelProperty("发票抬头 inva.invoice_title like CONCAT(CONCAT('%',#{invoiceTitle,jdbcType=VARCHAR}),'%')")
    private String invoiceTitle;

    /******************************************  时间类筛选 start ******************************************/

//	@ApiModelProperty("日期范围筛选-指定筛选时间字段 取值范围 [apply_time,audit_time,invoice_progressing_time,make_invoice_time,receive_invoice_time,mail_tick_time,back_account_time]")
//	private String timeField;
//	@ApiModelProperty("日期范围筛选-开始时间")
//	private String startTime;
//	@ApiModelProperty("日期范围筛选-结束时间")
//	private String endTime;


    @ApiModelProperty("2.5.3.5 发票种类-单选")
    private Long         invoiceTypeId;
    @ApiModelProperty("2.5.3.5 发票种类-多选")
    private List<Long>   invoiceTypeIdsSelected;
    @ApiModelProperty("2.5.3.6 开票方式-单选")
    private String       invoiceMode;
    @ApiModelProperty("2.5.3.6 开票方式-多选")
    private List<String> invoiceModesSelected;


    //	private String outVirtName;
    @ApiModelProperty("2.5.3.3 企业Id")
    private String outVirtId;

    /**************************************** 发票申请部分 start ****************************************/

    @ApiModelProperty("2.5.3.3 申请人 发票申请部分 - 发票申请人Id - 后台帐号")
    private Long   applyUserId;
    @ApiModelProperty("2.5.3.8 申请时间")
    private String applyTimeStart;
    @ApiModelProperty("2.5.3.8 申请时间")
    private String applyTimeEnd;


    /****************************************** 发票申请审核部分 start ******************************************/
    @ApiModelProperty("发票申请审核部分(超级前台(适用)|侨城汇(弃用))-审核状态 1-未审核;2-已同意;3-已拒绝; 前端单选,接口单选")
    private Integer auditStatus;
    @ApiModelProperty("发票申请审核部分 - 审核人Id - 后台帐号")
    private Long    auditUserId;

    /****************************************** 开票进展部分 start ******************************************/

    @ApiModelProperty("2.5.3.4 申请状态 开票进展部分(超级前台(适用)|侨城汇(适用))-开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;原来的定义:发票状态 0未邮寄 1已邮寄 2已作废 原先的筛选字段 private Integer invoiceStatus; 单选")
    private Integer       invoiceProgressingStatus;
    @ApiModelProperty("2.5.3.4 申请状态 开票进展部分(超级前台(适用)|侨城汇(适用))-开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;原来的定义:发票状态 0未邮寄 1已邮寄 2已作废 原先的筛选字段 private Integer invoiceStatus; 多选")
    private List<Integer> invoiceProgressingStatusSelected;
    @ApiModelProperty("开票进展部分 - 最后更新人 - sysUserId")
    private Long          invoiceProgressingUserId;

    /****************************************** 开票登记部分 start ******************************************/

    @ApiModelProperty("2.5.3.7 开票状态 发票登记部分(超级前台(适用)|侨城汇(适用))-开票状态 0-未开票;1-已开票;2-重新开票; 单选")
    private Integer       makeInvoiceStatus;
    @ApiModelProperty("2.5.3.7 开票状态 发票登记部分(超级前台(适用)|侨城汇(适用))-开票状态 0-未开票;1-已开票;2-重新开票; 多选")
    private List<Integer> makeInvoiceStatusSelected;
    @ApiModelProperty("2.5.3.3 开票人 发票登记部分 - 开票登记人 - 后台帐号")
    private Long          makeInvoiceUserId;
    @ApiModelProperty("2.5.3.8 开票时间")
    private String        makeInvoiceTimeStart;
    @ApiModelProperty("2.5.3.8 开票时间")
    private String        makeInvoiceTimeEnd;

    /****************************************** 运营领票部分 start ******************************************/

    @ApiModelProperty("运营领票部分(超级前台(不适用)|侨城汇(专用))-领票状态:0-未领票;1-已领票; 单选")
    private Integer       receiveInvoiceStatus;
    @ApiModelProperty("运营领票部分(超级前台(不适用)|侨城汇(专用))-领票状态:0-未领票;1-已领票; 多选")
    private List<Integer> receiveInvoiceStatusSelected;
    @ApiModelProperty("领票部分 - 最后更新人 - sysUserId")
    private Long          receiveInvoiceUserId;
    @ApiModelProperty("2.5.3.8 领票部分")
    private String        receiveInvoiceTimeStart;
    @ApiModelProperty("2.5.3.8 领票部分")
    private String        receiveInvoiceTimeEnd;

    /****************************************** 寄票登记部分 start ******************************************/

    @ApiModelProperty("寄票登记部分(超级前台(适用)|侨城汇(适用))-寄票状态:0-未寄票;1-已寄票; 单选")
    private Integer       mailTickStatus;
    @ApiModelProperty("寄票登记部分(超级前台(适用)|侨城汇(适用))-寄票状态:0-未寄票;1-已寄票; 多选")
    private List<Integer> mailTickStatusSelected;
    @ApiModelProperty(value = "寄票登记部分 - 寄票登记人 - 后台帐号")
    private Long          mailTickUserId;
    @ApiModelProperty("2.5.3.8 寄票时间")
    private String        mailTickTimeStart;
    @ApiModelProperty("2.5.3.8 寄票时间")
    private String        mailTickTimeEnd;

    /****************************************** 回款登记部分 start ******************************************/

    @ApiModelProperty("回款登记部分(超级前台(适用)|侨城汇(适用))-回款状态:0-未回款;1-部分回款;2全部回款; 单选")
    private Integer       backAccountStatus;
    @ApiModelProperty("回款登记部分(超级前台(适用)|侨城汇(适用))-回款状态:0-未回款;1-部分回款;2全部回款; 多选")
    private List<Integer> backAccountStatusSelected;
    @ApiModelProperty(value = "回款登记部分 - 最后更新人 - sysUserId")
    private Long          backAccountUserId;
    @ApiModelProperty("2.5.3.8 回款时间")
    private String        backAccountTimeStart;
    @ApiModelProperty("2.5.3.8 回款时间")
    private String        backAccountTimeEnd;


    @ApiModelProperty("对账单-申请状态")
    private Integer accountingOrderInvoiceStatus;

    /****************************************** 对账XML条件 invoiceApplySelectFocusScoreDimCredit start ******************************************/

    @ApiModelProperty("对账单Id-积分结算2.1")
    private Long       accountingOrderId;
    @ApiModelProperty("2.5.3.1 对账单编号 - 对账单Sn-精准查询 - and ascu.accounting_order_sn = #{accountingOrderSn,jdbcType=VARCHAR}")
    private String     accountingOrderSn;
    @ApiModelProperty("排除已经开票申请的流水:0-不排除;1-排除;默认排除;作用条件accountingOrderId有值,accountingOrderSn不触发(invoice_apply_x_goods.accounting_order_sn目前没值)")
    private Integer    excludeInvoiceApplied = 1;
    @ApiModelProperty("已选流水Id;作用条件accountingOrderId有值")
    private List<Long> unifiedOrderCreditIdsSelected;
    @ApiModelProperty("部门查询 uo.purchase_department_name like CONCAT('%',#{purchaseDepartmentName},'%')")
    private String     purchaseDepartmentName;

    /****************************************** 对账XML条件 invoiceApplySelectFocusScoreDimCredit   end ******************************************/


    @ApiModelProperty("对账单内的流水对账状态;是否对账的问题:-1-不对账;1-已对账;默认为0,不区分;订单|商品|流水,共用的对账状态:-1-不对账;1-已对账;2-未对账;3-已作废; 引用 enum CommonAccountingStateEnum")
    private Integer creditAccountingState = 0;


    @ApiModelProperty("引用Enum CommonSourceFromEnum-支持多选-add at v2.3 20220516")
    private List<String> sourceFromsSelected;
    @ApiModelProperty("引用Enum CommonServiceNoEnum-支持多选-add at v2.3 20220516")
    private List<String> serviceNosSelected;

}
