/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 
 * 
 *
 * 
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */

package com.jdcloud.sdk.service.billing.model;

import java.util.List;
import java.util.ArrayList;
import com.jdcloud.sdk.annotation.Required;

/**
 * pushBillsReq
 */
public class PushBillsReq  implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 操作类型： 1、新增账单 2、更新账单数据
     * Required:true
     */
    @Required
    private Integer opType;

    /**
     * 数据来源：10、物联网 11、视频云 12、CDN 13、PCDN 14、IDC 15、通信云
     * Required:true
     */
    @Required
    private Integer dataSource;

    /**
     * 全局唯一ID
     * Required:true
     */
    @Required
    private String globalId;

    /**
     * 用户pin，不可修改
     * Required:true
     */
    @Required
    private String pin;

    /**
     * 需要推送的账单列表，一次最多传10条
     * Required:true
     */
    @Required
    
    private List<BillVo> billList;


    /**
     * get 操作类型： 1、新增账单 2、更新账单数据
     *
     * @return
     */
    public Integer getOpType() {
        return opType;
    }

    /**
     * set 操作类型： 1、新增账单 2、更新账单数据
     *
     * @param opType
     */
    public void setOpType(Integer opType) {
        this.opType = opType;
    }


    /**
     * get 数据来源：10、物联网 11、视频云 12、CDN 13、PCDN 14、IDC 15、通信云
     *
     * @return
     */
    public Integer getDataSource() {
        return dataSource;
    }

    /**
     * set 数据来源：10、物联网 11、视频云 12、CDN 13、PCDN 14、IDC 15、通信云
     *
     * @param dataSource
     */
    public void setDataSource(Integer dataSource) {
        this.dataSource = dataSource;
    }


    /**
     * get 全局唯一ID
     *
     * @return
     */
    public String getGlobalId() {
        return globalId;
    }

    /**
     * set 全局唯一ID
     *
     * @param globalId
     */
    public void setGlobalId(String globalId) {
        this.globalId = globalId;
    }


    /**
     * get 用户pin，不可修改
     *
     * @return
     */
    public String getPin() {
        return pin;
    }

    /**
     * set 用户pin，不可修改
     *
     * @param pin
     */
    public void setPin(String pin) {
        this.pin = pin;
    }


    /**
    * get 需要推送的账单列表，一次最多传10条
    *
    * @return
    */
    public List<BillVo> getBillList() {
        return billList;
    }

    /**
    * set 需要推送的账单列表，一次最多传10条
    *
    * @param billList
    */
    public void setBillList(List<BillVo> billList) {
        this.billList = billList;
    }



    /**
     * set 操作类型： 1、新增账单 2、更新账单数据
     *
     * @param opType
     */
    public PushBillsReq opType(Integer opType) {
        this.opType = opType;
        return this;
    }


    /**
     * set 数据来源：10、物联网 11、视频云 12、CDN 13、PCDN 14、IDC 15、通信云
     *
     * @param dataSource
     */
    public PushBillsReq dataSource(Integer dataSource) {
        this.dataSource = dataSource;
        return this;
    }


    /**
     * set 全局唯一ID
     *
     * @param globalId
     */
    public PushBillsReq globalId(String globalId) {
        this.globalId = globalId;
        return this;
    }


    /**
     * set 用户pin，不可修改
     *
     * @param pin
     */
    public PushBillsReq pin(String pin) {
        this.pin = pin;
        return this;
    }


    /**
    * set 需要推送的账单列表，一次最多传10条
    *
    * @param billList
    */
    public PushBillsReq billList(List<BillVo> billList) {
        this.billList = billList;
        return this;
    }



    /**
     * add item to 需要推送的账单列表，一次最多传10条
     *
     * @param billList
     */
    public void addBillList(BillVo billList) {
        if (this.billList == null) {
            this.billList = new ArrayList<>();
        }
        this.billList.add(billList);
    }
}