package cn.com.ty.lift.ud.chat.controller.query;

import cn.com.ty.lift.ud.common.BasePageQuery;
import cn.com.ty.lift.ud.chat.mapper.entity.LiftCaseEntity;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 诊单 查询条件
 * 
 * @author Xson
 * @date 2020-04-23
 */
@Data
@ApiModel(description = "诊单 查询条件")
public final class LiftCaseQuery extends BasePageQuery {

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private Integer id;

    /**
     * 问题描述 问题描述
     */
    @ApiModelProperty("问题描述 问题描述")
    private String expression;

    /**
     * 已尝试的方法 已尝试的方法
     */
    @ApiModelProperty("已尝试的方法 已尝试的方法")
    private String usedMethods;

    /**
     * 图集 图集
     */
    @ApiModelProperty("图集 图集")
    private String imgs;

    /**
     * 品牌 品牌id
     */
    @ApiModelProperty("品牌 品牌id")
    private Integer brandId;

    /**
     * 出诊地址 地图显示，gps坐标
     */
    @ApiModelProperty("出诊地址 地图显示，gps坐标")
    private String address;

    /**
     * 专家 专家id
     */
    @ApiModelProperty("专家 专家id")
    private Long chargerId;

    /**
     * 差旅费 差旅费
     */
    @ApiModelProperty("差旅费 差旅费")
    private BigDecimal travelCost;

    /**
     * 服务费 服务费
     */
    @ApiModelProperty("服务费 服务费")
    private BigDecimal serviceCost;

    /**
     * 总价 总价
     */
    @ApiModelProperty("总价 总价")
    private BigDecimal totalCost;

    /**
     * 出诊时间
     */
    @ApiModelProperty("出诊时间")
    private Date arrivedTime;

    private Integer userType;
    
    /**
     * 问诊：
     * 
     * 0待付款(创建订单） =》 1已付款（待接单）=》 2已接单 =》 3专家确认完成 =》 4用户确认完成 =》 5待评价 =》 6待归档 =》 7已归档
     * 
     * 出诊： 0待接单(创建订单) =》 1已接单（待报价） =》 2待付款（已报价） =》 待打卡 =》 专家到场确认 =》 =》 3专家确认完成 =》 4用户确认完成 =》 5待评价
     */
    @ApiModelProperty("问诊：\n" + "\n"
        + "    0待付款(创建订单） =》  1已付款（待接单）=》 2已接单 =》 3专家确认完成 =》 4用户确认完成 =》 5待评价 =》 6待归档 =》 7已归档\n" + "\n" + "出诊：\n"
        + "    0待接单(创建订单) =》 1已接单（待报价） =》  2待付款（已报价） =》 待打卡 =》 专家到场确认 =》 \n"
        + "                                                             =》 3专家确认完成 =》 4用户确认完成 =》 5待评价 ")
    private String statuz1;

    private String statuz2;

    @ApiModelProperty("0待接单1已接单")
    private Integer acceptStatus;

    /**
     * 打卡标记 0已打卡1未打卡
     */
    @ApiModelProperty("打卡标记1已打卡0未打卡")
    private Integer arrivedFlag;

    /**
     * 打卡地点 打开地点
     */
    @ApiModelProperty("打卡地点 打开地点")
    private String arrivedAddress;

    /**
     * 问诊出诊 1问诊2出诊
     */
    @ApiModelProperty("问诊出诊 1问诊2出诊")
    private String dataTable;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private Long createUserId;

    @ApiModelProperty("平台客服id")
    private Integer customerServiceId;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private Date updateTime;

    @ApiModelProperty("固定值：NOTJOIN（单表查询）")
    private String join;

    @ApiModelProperty("卡券id")
    private Long couponId;

    @ApiModelProperty("红包id")
    private Long packetId;

    @ApiModelProperty("发票id")
    private Long invoiceId;

    @ApiModelProperty("操作")
    private String type;
    
    @ApiModelProperty("发起人")
    private String originator;
    
    @ApiModelProperty("品牌")
    private String brandName;
    
    private boolean haveSessionId;
    
    /**
     * 是否已开发票
     */
    @ApiModelProperty("是否已开发票")
    private Integer isInvoice;
    /**
     * 房间号
     */
    @ApiModelProperty("房间号")
    private String sessionId;
    
    /**
     * 专家名称
     */
    @ApiModelProperty("专家名称")
    private String chargeName;

    /**
     * 查询条件
     * 
     * @return
     */
    @Override
    public Wrapper condition() {
        QueryWrapper<LiftCaseEntity> query = new QueryWrapper<>();

        return query;
    }

    /**
     * 分页条件
     * 
     * @return
     */
    @Override
    public IPage page() {
        Page<LiftCaseEntity> page = new Page<>(getPageNum(), getPageSize());
        return page;
    }

}
