package com.hz.his.vo.bi.revenue;

import lombok.Data;

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

/**
 *收入确认表查询
 * @author CJH
 */
@Data
public class RevenueQuery{
    /**页数*/
    private Integer pageNum;
    /**条数*/
    private Integer pageSize;
    /**其他查询*/
    private String KeyWord;
    /**用户CIQ*/
    private String CIQ;
    /**是否划扣*/
    private Integer isDeduction;
    /**分类名称(同时搜索一级二级)*/
    private String orderLevelTypeName;
    /**关联编号*/
    private String associationNo;
    /**下单日期*/
    private Date startOrderTime;
    /**下单日期*/
    private Date endOrderTime;
    /**执行日期*/
    private Date startDeductionTime;
    /**执行日期*/
    private Date endDeductionTime;
    /**创建日期*/
    private Date startCreateTime;
    /**创建日期*/
    private Date endCreateTime;
    /**是否过滤测试账号*/
    private Integer isFilterTestAccount;
    /**是否过滤对冲数据*/
    private Integer isHedging;
    /**业绩类型*/
    private List<Integer> sourceTypeList;

    /**请求操作人*/
    private String operatorId;
    /**请求操作人*/
    private String operatorName;





    /**来源类型*/
    private Integer sourceType;
    /**来源类型名称*/
    private String sourceTypeName;
    /**来源标识*/
    private String sourceId;
    /**来源编号(根据来源类型存储编号(例:单号、划扣号)*/
    private String sourceNo;
    /**来源业绩时间*/
    private Date sourceTime;
    /**来源创建时间*/
    private Date sourceCreateTime;
    /**来源总标识*/
    private String sourceGeneralId;
    /**来源总编号(根据来源类型存储编号(例:单号、划扣号)*/
    private String sourceGeneralNo;
    /**营销分类*/
    private String marketingType;
    /**营销分类名称*/
    private String marketingTypeName;
    /**营销名称*/
    private String marketingName;
    /**基础分类*/
    private String basicType;
    /**基础分类名称*/
    private String basicTypeName;
    /**一级分类*/
    private String firstLevelType;
    /**一级分类名称*/
    private String firstLevelTypeName;
    /**二级分类*/
    private String secondLevelType;
    /**二级分类名称*/
    private String secondLevelTypeName;
    /**分类父类包括自己JSON*/
    private String classifyJson = "[]";
    /**项目id*/
    private String commonId;
    /**项目编号/商品编码*/
    private String commonNo;
    /**项目名称/商品名称*/
    private String commonName;
    /**规格*/
    private String specification;
    /**资质*/
    private String qualification;
    /**项目单位*/
    private String unit;
    /**科室编号*/
    private String departmentCode;
    /**科室名称*/
    private String departmentName;
    /**价格标签*/
    private String priceTag;
    /**收费订单id*/
    private String payOrderId;
    /**收费单号*/
    private String payOrderNo;
    /**结算时间(收费日期)*/
    private Date orderTime;
    /**执行日期*/
    private Date deductionTime;
    /**业务类型*/
    private String businessType;
    /**业务类型名称*/
    private String businessTypeName;
    /**用户id*/
    private String userId;
    /**会员号(用户编号)*/
    private String memberNO;
    private String memberCIQ;
    /**病例号*/
    private String memberCaseNo;
    /**客户类别*/
    private String userClass;
    /**是否首次执行*/
    private Integer isFirstDeduction;
    /**会员等级*/
    private String userLevel;
    /**用户名称*/
    private String userName;
    /**共享客户*/
    private Integer shareCustomer;
    /**客户类型*/
    private String userType;
    /**登记人类型*/
    private Integer registrantType;
    /**登记人Id*/
    private String registrantId;
    /**登记人名称*/
    private String registrantName;
    /**执行医生Id*/
    private String deductionDoctorId;
    /**执行医生名称*/
    private String deductionDoctorName;
    /**助理医生Id*/
    private String assistantDoctorId;
    /**助理医生名称*/
    private String assistantDoctorName;
    /**美容师Id*/
    private String beauticianId;
    /**美容师名称*/
    private String beauticianName;
    /**订单id*/
    private String orderId;
    /**订单编号*/
    private String orderNo;
    /**订单条码id*/
    private String orderItemId;
    /**订单条码编号*/
    private String orderItemNo;
    /**开单人类型*/
    private Integer orderOpType;
    /**开单人Id*/
    private String orderOpId;
    /**开单人名称*/
    private String orderOpName;
    /**开发人类型*/
    private Integer developOpType;
    /**开发人Id*/
    private String developOpId;
    /**开发人名称*/
    private String developOpName;
    /**开发人门店标识*/
    private String developShopId;
    /**开发人门店名称*/
    private String developShopName;
    /**所属咨询师类型*/
    private Integer belongConsultantType;
    /**用户所属咨询师id(Employee id) 用户划扣时的所属咨询师*/
    private String belongConsultantId;
    /**用户所属咨询师名称*/
    private String belongConsultantName;
    /**用户所属咨询师所属门店信息*/
    private String belongConsultantShopInfo;
    /**开单咨询师类型*/
    private Integer orderConsultantType;
    /**开单咨询师id*/
    private String orderConsultantId;
    /**开单咨询师名称*/
    private String orderConsultantName;
    /**收银咨询师类型*/
    private Integer cashierConsultantType;
    /**收银咨询师id*/
    private String cashierConsultantId;
    /**收银咨询师名称*/
    private String cashierConsultantName;
    /**接诊咨询师名称类型*/
    private Integer receptionConsultantType;
    /**接诊咨询师id*/
    private String receptionConsultantId;
    /**接诊咨询师名称*/
    private String receptionConsultantName;
    /**执行咨询师类型*/
    private Integer deductionConsultantType;
    /**执行咨询师id*/
    private String deductionConsultantId;
    /**执行咨询师名称*/
    private String deductionConsultantName;
    /**收入计入*/
    private String revenueRecordedType;
    /**收入计入名称*/
    private String revenueRecordedName;
    /**收入主体*/
    private String revenueSubjectType;
    /**收入主体名称*/
    private String revenueSubjectName;
    /**原单价*/
    private BigDecimal originalPrice = BigDecimal.ZERO;
    /**数量*/
    private Integer quantity;
    /**未执行次数*/
    private Integer notUsedNum;
    /**折扣*/
    private BigDecimal discount = BigDecimal.ZERO;
    /**折后金额*/
    private BigDecimal discountAmount = BigDecimal.ZERO;
    /**收银金额*/
    private BigDecimal cashierAmount = BigDecimal.ZERO;
    /**是否欠费*/
    private Integer isArrears;
    /**预定金*/
    private BigDecimal deposit = BigDecimal.ZERO;
    /**储值金*/
    private BigDecimal storedValueFund = BigDecimal.ZERO;
    /**增值金*/
    private BigDecimal valueAddedFund = BigDecimal.ZERO;
    /**积分*/
    private BigDecimal integral = BigDecimal.ZERO;
    /**积分金额*/
    private BigDecimal integralAmount = BigDecimal.ZERO;
    /**虚拟金额*/
    private BigDecimal virtualAmount = BigDecimal.ZERO;
    /**业绩总额*/
    private BigDecimal performanceTotal = BigDecimal.ZERO;
    /**业绩不含税*/
    private BigDecimal performanceNotHasTax;
    /**税额*/
    private BigDecimal taxAmount;
    /**标准耗材成本*/
    private BigDecimal standardConsumablesCost = BigDecimal.ZERO;
    /**实际耗材成本*/
    private BigDecimal actualConsumablesCost = BigDecimal.ZERO;
    /**渠道分类标识*/
    private String channelsTypeId;
    /**渠道分类名称*/
    private String channelsTypeName;
    /**渠道标识*/
    private String channelId;
    /**渠道名称*/
    private String channelName;
    /**渠道联系人类型*/
    private Integer channelContactType;
    /**渠道联系人Id*/
    private String channelContactId;
    /**渠道联系人名称*/
    private String channelContactName;
    /**渠道合作人类型*/
    private Integer channelPartnerType;
    /**渠道合作人Id*/
    private String channelPartnerId;
    /**渠道合作人名称*/
    private String channelPartnerName;
    /**诊所内部联络人类型*/
    private Integer internalContactType;
    /**诊所内部联络人Id*/
    private String internalContactId;
    /**诊所内部联络人名称*/
    private String internalContactName;
    /**电网咨询师id*/
    private String tmkServiceId;
    /**电网咨询师名称*/
    private String tmkServiceName;
    /**客服id*/
    private String chatCorpUserId;
    /**客服名称*/
    private String chatCorpUserName;
    /**护士id*/
    private String nurseCorpUserId;
    /**护士名称*/
    private String nurseCorpUserName;
    /**洗手护士id*/
    private String handWashNurseId;
    /**洗手护士名称*/
    private String handWashNurseName;
    /**巡回护士id*/
    private String circuitingNurseId;
    /**巡回护士名称*/
    private String circuitingNurseName;
    /**配台护士id*/
    private String tableNurseId;
    /**配台护士名称*/
    private String tableNurseName;
    /**麻醉师id*/
    private String anesthesiologistId;
    /**麻醉师名称*/
    private String anesthesiologistName;
    /**疗程总额*/
    private BigDecimal treatmentTotal;
    /**TMK登记人id*/
    private String tmkRegistrantId;
    /**TMK登记人名称*/
    private String tmkRegistrantName;
    /**收费员id*/
    private String chargeId;
    /**收费员名称*/
    private String chargeName;
    /**服务门店id*/
    private String serviceShopId;
    /**服务门店名称*/
    private String serviceShopName;
    /**用户所属门店id*/
    private String belongShopId;
    /**用户所属门店名称*/
    private String belongShopName;
    /**下单门店id*/
    private String orderShopId;
    /**下单门店名称*/
    private String orderShopName;
    /**收银门店id*/
    private String cashierShopId;
    /**收银门店名称*/
    private String cashierShopName;
    /**收费备注*/
    private String chargeRemark;
    /**营销标签*/
    private String marketingTag;
    /**是否转诊转疗*/
    private Integer isTurn;
    /**是否可执行项目*/
    private Integer isDeductionProject;
    /**是否疗程项目*/
    private Integer isTreatmentProject;
    /**购买数量*/
    private Integer buyNum;
    /**疗程次数*/
    private Integer treatmentNum;
    /**疗程总数*/
    private Integer treatmentTotality;
    /**疗程序号*/
    private Integer treatmentNo;
    /**划扣备注*/
    private String deductionRemark;
    /**免单原因*/
    private String freeReason;
    /**业绩类别*/
    private String performanceCategory;
    /**业绩类别名称*/
    private String performanceCategoryName;
    /**订单类型*/
    private String orderType;
    /**订单类型名称*/
    private String orderTypeName;
    /**订单分类*/
    private int orderClassify;
    /**订单类型名称*/
    private String orderClassifyName;
    /**客户成交标签*/
    private String customerTransactionTag;
    /**订单渠道分类名称*/
    private String orderChannelsTypeName;
    /**订单一级分类*/
    private String orderFirstLevelType;
    /**订单一级分类名称*/
    private String orderFirstLevelTypeName;
    /**订单渠道的json*/
    private String orderChannelJson = "[]";
    /**订单渠道一级编号*/
    private String orderChannel1No;
    /**订单渠道一级的分类标识*/
    private String orderChannel1TypeId;
    /**订单渠道一级的分类编号*/
    private String orderChannel1TypeNo;
    /**订单渠道一级的分类名称*/
    private String orderChannel1TypeName;
    /**订单二级分类*/
    private String orderSecondLevelType;
    /**订单二级分类名称*/
    private String orderSecondLevelTypeName;
    /**订单渠道二级编号*/
    private String orderChannel2No;
    /**订单渠道二级的联系人名称*/
    private String orderChannel2Contacts;
    /**订单渠道二级的部门标识*/
    private String orderChannel2Depart;
    /**订单渠道二级的部门名称*/
    private String orderChannel2DepartName;
    /**订单渠道二级的分类标识*/
    private String orderChannel2TypeId;
    /**订单渠道二级的分类编号*/
    private String orderChannel2TypeNo;
    /**订单渠道二级的分类名称*/
    private String orderChannel2TypeName;
    /**订单渠道合作人Id*/
    private String orderChannelPartnerId;
    /**订单渠道合作人名称*/
    private String orderChannelPartnerName;
    /**客户推荐人分类标识*/
    private String inviteeTypeId;
    /**客户推荐人分类名称*/
    private String inviteeTypeName;
    /**客户推荐人标识*/
    private String inviteeId;
    /**客户推荐人编号*/
    private String inviteeNo;
    /**邀请人编号*/
    private String inviteeCIQ;
    /**客户推荐人名称*/
    private String inviteeName;
    /**订单推荐人类型*/
    private String orderInviteeType;
    /**订单推荐人名称*/
    private String orderInviteeTypeName;
    /**订单推荐人标识*/
    private String orderInviteeId;
    /**客户推荐人编号*/
    private String orderInviteeNo;
    /**邀请人编号*/
    private String orderInviteeCIQ;
    /**订单推荐人名称*/
    private String orderInviteeName;
    /**订单推荐人角色信息*/
    private String orderInviteeRoleInfo;
    /**会员主诊医生Id*/
    private String attendingDoctorId;
    /**会员主诊医生名称*/
    private String attendingDoctorName;
    /**治疗单类型*/
    private Integer treatOrderClassify;
    /**治疗单类型*/
    private String treatOrderClassifyName;
    /**优惠券发放人*/
    private String couponIssuer;
    /**优惠券发放人角色*/
    private String couponIssuerRole;
    /**优惠券名称*/
    private String couponName;
    /**主渠道*/
    private String mainChannelName;
    /**执行部位*/
    private String deductionBodyPartInfo;



    public Integer getPageNum() {
        if(pageNum == null){
            pageNum = 1;
        }
        return pageNum;
    }

    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }

    public Integer getPageSize() {
        if(pageSize == null || pageSize > 500){
            pageSize = 20;
        }
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
}