# 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 WorkTime(object):
    _types = {
        "work_start_time": str,
        "work_end_time": str,
        "settlement_type": str,
        "check_fail_reason": str,
        "overtime_date": str,
    }

    def __init__(self, d=None):
        self.work_start_time: Optional[str] = None
        self.work_end_time: Optional[str] = None
        self.settlement_type: Optional[str] = None
        self.check_fail_reason: Optional[str] = None
        self.overtime_date: Optional[str] = None
        init(self, d, self._types)

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


class WorkTimeBuilder(object):
    def __init__(self) -> None:
        self._work_time = WorkTime()

    def work_start_time(self, work_start_time: str) -> "WorkTimeBuilder":
        self._work_time.work_start_time = work_start_time
        return self

    def work_end_time(self, work_end_time: str) -> "WorkTimeBuilder":
        self._work_time.work_end_time = work_end_time
        return self

    def settlement_type(self, settlement_type: str) -> "WorkTimeBuilder":
        self._work_time.settlement_type = settlement_type
        return self

    def check_fail_reason(self, check_fail_reason: str) -> "WorkTimeBuilder":
        self._work_time.check_fail_reason = check_fail_reason
        return self

    def overtime_date(self, overtime_date: str) -> "WorkTimeBuilder":
        self._work_time.overtime_date = overtime_date
        return self

    def build(self) -> "WorkTime":
        return self._work_time
