# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init


class AdminDeptStat(object):
    _types = {
        "date": str,
        "department_id": str,
        "department_name": str,
        "department_path": str,
        "total_user_num": int,
        "active_user_num": int,
        "active_user_rate": str,
        "suite_dau": int,
        "suite_active_rate": str,
        "new_user_num": int,
        "new_active_num": int,
        "resign_user_num": int,
        "im_dau": int,
        "send_messenger_user_num": int,
        "send_messenger_num": int,
        "avg_send_messenger_num": str,
        "docs_dau": int,
        "create_docs_user_num": int,
        "create_docs_num": int,
        "avg_create_docs_num": str,
        "cal_dau": int,
        "create_cal_user_num": int,
        "create_cal_num": int,
        "avg_create_cal_num": str,
        "vc_dau": int,
        "vc_duration": int,
        "avg_vc_duration": str,
        "avg_duration": str,
        "task_dau": int,
        "create_task_user_num": int,
        "create_task_num": int,
        "avg_create_task_num": str,
        "email_send_count": int,
        "email_receive_count": int,
        "email_send_ext_count": int,
        "email_receive_ext_count": int,
        "email_send_in_count": int,
        "email_receive_in_count": int,
        "search_active_dau": int,
        "total_search_count": int,
        "quick_search_count": int,
        "tab_search_count": int,
        "product_version": str,
    }

    def __init__(self, d=None):
        self.date: Optional[str] = None
        self.department_id: Optional[str] = None
        self.department_name: Optional[str] = None
        self.department_path: Optional[str] = None
        self.total_user_num: Optional[int] = None
        self.active_user_num: Optional[int] = None
        self.active_user_rate: Optional[str] = None
        self.suite_dau: Optional[int] = None
        self.suite_active_rate: Optional[str] = None
        self.new_user_num: Optional[int] = None
        self.new_active_num: Optional[int] = None
        self.resign_user_num: Optional[int] = None
        self.im_dau: Optional[int] = None
        self.send_messenger_user_num: Optional[int] = None
        self.send_messenger_num: Optional[int] = None
        self.avg_send_messenger_num: Optional[str] = None
        self.docs_dau: Optional[int] = None
        self.create_docs_user_num: Optional[int] = None
        self.create_docs_num: Optional[int] = None
        self.avg_create_docs_num: Optional[str] = None
        self.cal_dau: Optional[int] = None
        self.create_cal_user_num: Optional[int] = None
        self.create_cal_num: Optional[int] = None
        self.avg_create_cal_num: Optional[str] = None
        self.vc_dau: Optional[int] = None
        self.vc_duration: Optional[int] = None
        self.avg_vc_duration: Optional[str] = None
        self.avg_duration: Optional[str] = None
        self.task_dau: Optional[int] = None
        self.create_task_user_num: Optional[int] = None
        self.create_task_num: Optional[int] = None
        self.avg_create_task_num: Optional[str] = None
        self.email_send_count: Optional[int] = None
        self.email_receive_count: Optional[int] = None
        self.email_send_ext_count: Optional[int] = None
        self.email_receive_ext_count: Optional[int] = None
        self.email_send_in_count: Optional[int] = None
        self.email_receive_in_count: Optional[int] = None
        self.search_active_dau: Optional[int] = None
        self.total_search_count: Optional[int] = None
        self.quick_search_count: Optional[int] = None
        self.tab_search_count: Optional[int] = None
        self.product_version: Optional[str] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "AdminDeptStatBuilder":
        return AdminDeptStatBuilder()


class AdminDeptStatBuilder(object):
    def __init__(self) -> None:
        self._admin_dept_stat = AdminDeptStat()

    def date(self, date: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.date = date
        return self

    def department_id(self, department_id: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.department_id = department_id
        return self

    def department_name(self, department_name: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.department_name = department_name
        return self

    def department_path(self, department_path: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.department_path = department_path
        return self

    def total_user_num(self, total_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.total_user_num = total_user_num
        return self

    def active_user_num(self, active_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.active_user_num = active_user_num
        return self

    def active_user_rate(self, active_user_rate: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.active_user_rate = active_user_rate
        return self

    def suite_dau(self, suite_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.suite_dau = suite_dau
        return self

    def suite_active_rate(self, suite_active_rate: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.suite_active_rate = suite_active_rate
        return self

    def new_user_num(self, new_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.new_user_num = new_user_num
        return self

    def new_active_num(self, new_active_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.new_active_num = new_active_num
        return self

    def resign_user_num(self, resign_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.resign_user_num = resign_user_num
        return self

    def im_dau(self, im_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.im_dau = im_dau
        return self

    def send_messenger_user_num(self, send_messenger_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.send_messenger_user_num = send_messenger_user_num
        return self

    def send_messenger_num(self, send_messenger_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.send_messenger_num = send_messenger_num
        return self

    def avg_send_messenger_num(self, avg_send_messenger_num: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_send_messenger_num = avg_send_messenger_num
        return self

    def docs_dau(self, docs_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.docs_dau = docs_dau
        return self

    def create_docs_user_num(self, create_docs_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_docs_user_num = create_docs_user_num
        return self

    def create_docs_num(self, create_docs_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_docs_num = create_docs_num
        return self

    def avg_create_docs_num(self, avg_create_docs_num: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_create_docs_num = avg_create_docs_num
        return self

    def cal_dau(self, cal_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.cal_dau = cal_dau
        return self

    def create_cal_user_num(self, create_cal_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_cal_user_num = create_cal_user_num
        return self

    def create_cal_num(self, create_cal_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_cal_num = create_cal_num
        return self

    def avg_create_cal_num(self, avg_create_cal_num: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_create_cal_num = avg_create_cal_num
        return self

    def vc_dau(self, vc_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.vc_dau = vc_dau
        return self

    def vc_duration(self, vc_duration: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.vc_duration = vc_duration
        return self

    def avg_vc_duration(self, avg_vc_duration: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_vc_duration = avg_vc_duration
        return self

    def avg_duration(self, avg_duration: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_duration = avg_duration
        return self

    def task_dau(self, task_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.task_dau = task_dau
        return self

    def create_task_user_num(self, create_task_user_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_task_user_num = create_task_user_num
        return self

    def create_task_num(self, create_task_num: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.create_task_num = create_task_num
        return self

    def avg_create_task_num(self, avg_create_task_num: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.avg_create_task_num = avg_create_task_num
        return self

    def email_send_count(self, email_send_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_send_count = email_send_count
        return self

    def email_receive_count(self, email_receive_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_receive_count = email_receive_count
        return self

    def email_send_ext_count(self, email_send_ext_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_send_ext_count = email_send_ext_count
        return self

    def email_receive_ext_count(self, email_receive_ext_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_receive_ext_count = email_receive_ext_count
        return self

    def email_send_in_count(self, email_send_in_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_send_in_count = email_send_in_count
        return self

    def email_receive_in_count(self, email_receive_in_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.email_receive_in_count = email_receive_in_count
        return self

    def search_active_dau(self, search_active_dau: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.search_active_dau = search_active_dau
        return self

    def total_search_count(self, total_search_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.total_search_count = total_search_count
        return self

    def quick_search_count(self, quick_search_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.quick_search_count = quick_search_count
        return self

    def tab_search_count(self, tab_search_count: int) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.tab_search_count = tab_search_count
        return self

    def product_version(self, product_version: str) -> "AdminDeptStatBuilder":
        self._admin_dept_stat.product_version = product_version
        return self

    def build(self) -> "AdminDeptStat":
        return self._admin_dept_stat
