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

import cn.superdesk.uniorder.common.pagination.AnBaseQueryCriteria;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.List;

/**
 * @Description: superdesk-uniorder/superdesk-uniorder-dao/src/main/resources/mappers/invoice/customer/InvoiceApplyMapperExScore.xml <sql id="findViewWhereIf">
 * @Author: linjinyu
 * @CreateDate: 2021/3/18 下午12:09
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/3/18 下午12:09
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder(toBuilder = true)
@Data
public class InvoiceApplyCustomerQueryCriteria extends AnBaseQueryCriteria {


    /**
     * 排序 按申请时间倒序 order by
     */
    public final static String ORDER_BY_DEFAULT      = "inva.apply_time DESC";
    /**
     * 开票申请内按流水的下单时间“升序”依次排列，同一时间随机排列
     */
    public final static String ORDER_BY_EXPORT_EXCEL = "uo.create_time ASC";

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

    /******************************************  start ******************************************/

    @ApiModelProperty("开票申请 导出开票数据 请用 invoiceApplyIdsSelected 早前叫 invoiceApplyIds")
    private List<Long>   invoiceApplyIdsSelected;
    @ApiModelProperty("invoiceApplySnsSelected 等同于 fpqqlshSelected")
    private List<String> invoiceApplySnsSelected;
    @ApiModelProperty("金税盘 导出开票数据 请用 fpqqlshSelected 等同于 invoiceApplySnsSelected")
    private List<String> fpqqlshSelected;

    @ApiModelProperty("请输入导出开票申请的标题内容")
    private String remark;

    @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("填写税局发票号 原先字段名为 invNumber") // 修改标记 20211201
    private String invoiceNumber;

    @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;




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

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

    @ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;原来的定义:发票状态 0未邮寄 1已邮寄 2已作废 原先的筛选字段 private Integer invoiceStatus; 前端单选,接口预留多选")
    private List<Integer> invoiceProgressingStatus;

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

    @ApiModelProperty("发票登记部分(超级前台(适用)|侨城汇(不适用))-开票状态 0-未开票;1-已开票;2-重新开票; 前端单选,接口预留多选")
    private List<Integer> makeInvoiceStatus;

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

    @ApiModelProperty("运营领票部分(超级前台(不适用)|侨城汇(专用))-领票状态:0-未领票;1-已领票; 前端单选,接口预留多选")
    private List<Integer> receiveInvoiceStatus;

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

    @ApiModelProperty("寄票登记部分(超级前台(适用)|侨城汇(适用))-寄票状态:0-未寄票;1-已寄票; 前端单选,接口预留多选")
    private List<Integer> mailTickStatus;

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

    @ApiModelProperty("回款登记部分(超级前台(适用)|侨城汇(适用))-回款状态:0-未回款;1-部分回款;2全部回款; 前端单选,接口单选")
    private Integer backAccountStatus;
    @ApiModelProperty("日期范围筛选-特定为-回款时间-开始时间-原先名为 backtimestar ")
    private String  backAccountTimeStart;
    @ApiModelProperty("日期范围筛选-特定为-回款时间-结束时间-原先名为 backtimeend")
    private String  backAccountTimeEnd;


    /******************************************  start ******************************************/
    @ApiModelProperty("特指 对账单Id")
    private Long id;

    /******************************************  start ******************************************/


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

    @ApiModelProperty("对账单Id-积分结算")
    private Long       accountingOrderId;
    @ApiModelProperty("对账单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;
    @ApiModelProperty("流水的客户对账状态 防页面多开")
    private Integer    uocAccountingStateCustomer;

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


    @ApiModelProperty("错误 auco.merch_name 已除")
    private String merchName;
    @ApiModelProperty("错误 auco.address_realname 已除")
    private String addressRealname;


    @ApiModelProperty("错误 sys_oder_user 已除 存在问题,大概弃用<if test=\"purchaser != null\">\n" +
            "\t\t\tAND EXISTS (\n" +
            "\t\t\t\tSELECT 1\n" +
            "\t\t\t\tfrom\n" +
            "\t\t\t\t\tsys_oder_user sou1\n" +
            "\t\t\t\tWHERE\n" +
            "\t\t\t\t\tsou1.user_id = uo.purchase_user_id\n" +
            "\t\t\t\t\tAND sou1.realname = #{purchaser,jdbcType=VARCHAR}\n" +
            "\t\t\t)\n" +
            "\t\t</if>")
    private String purchaser;

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


}
